Setup

back to TOC

Data preparation

NAs introduced by coercionNAs introduced by coercionNAs introduced by coercionNAs introduced by coercionNAs introduced by coercionNAs introduced by coercion‘-’ not meaningful for factorsJoining, by = c("study", "subid", "target", "happy", "depressed", "fear", "angry", "calm", "sounds", "seeing", "temperature", "odors", "depth", "computations", "thoughts", "reasoning", "remembering", "beliefs", "hungry", "tired", "pain", "nauseated", "safe", "love", "recognizing", "communicating", "guilt", "disrespected", "free_will", "choices", "self_restraint", "intentions", "goal", "conscious", "self_aware", "desires", "embarrassed", "emo_recog", "joy", "morality", "personality", "pleasure", "pride", "CATCH")
Joining, by = c("study", "subid")

back to TOC

Analysis plan

For all studies we conduct exploratory factor analyses using Pearson correlations to find minimum residual solutions.

For each study, we first examine maximal unrotated and rotated solutions. To determine the maximum number of factors to extract, we use the following rule of thumb: With \(p\) observations per participant, we can extract a maximum of \(k\) factors, where \((p-k)*2 > p+k\), i.e., \(k < p/3\). Thus, with 40 mental capacity items, we can extract a maximum of 13 factors.

To determine how many factors to retain, we use the following preset retention criteria, considering the unrotated maximal solution:

We then examine and interpret varimax-rotated solutions, extracting only the number of factors that meet these criteria.

Note: For Studies 1-2, we initially planned to conduct dimension reduction analyses for each condition (beetle vs. robot) separately. However, we now consider this analysis plan to have been fundamentally flawed: Each of these separate analyses is only capable of surfacing factors that highlight substantial disagreement among participants within that condition thus failing to capture key differences in attributions of mental capacities to beetles vs. robots, with no formal means of synthesizing results across conditions. Nonetheless, the results of these analyses are generally consistent with the findings reported here: The most prominent and reliable finding within each condition is that participants distinguish between emotional and perceptual varieties of experience. See https://osf.io/zd3mu for the preregistered analyses, included analysis scripts.

Study 1

Design: 2 conditions (beetle, robot), between-subjects Date conducted: 2015-12-15

Demographics

NAs introduced by coercion
Joining, by = c("condition", "min_age", "max_age", "median_age", "mean_age", "sd_age")
joining character vector and factor, coercing into character vector

back to TOC

Exploratory factor analysis

Step 1: Run maximal EFA (without and with rotation)

Parallel analysis suggests that the number of factors =  3  and the number of components =  3 

Factor Analysis using method =  minres
Call: fa(r = d1_all, nfactors = 13, rotate = "none", fm = "minres", 
    cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
                 MR1   MR2   MR4   MR3   MR6   MR5   MR7   MR8   MR9  MR11  MR10  MR12  MR13   h2    u2 com
happy           0.78  0.26 -0.08  0.29 -0.06 -0.20 -0.07  0.04  0.04  0.01  0.02  0.04 -0.06 0.82 0.179 1.8
depressed       0.75  0.38 -0.21  0.10 -0.11  0.01  0.03  0.10  0.04 -0.04 -0.04  0.09 -0.07 0.80 0.196 1.9
fear            0.74 -0.17  0.08  0.41  0.03  0.11 -0.12  0.09  0.02 -0.04  0.09 -0.01  0.00 0.80 0.202 1.9
angry           0.77  0.15 -0.05  0.23 -0.06  0.02 -0.01  0.16  0.08 -0.01  0.08  0.05  0.02 0.71 0.286 1.5
calm            0.74  0.03  0.11  0.25  0.11  0.00 -0.13  0.00  0.12 -0.01  0.03  0.05  0.00 0.67 0.325 1.5
sounds          0.11  0.16  0.59 -0.06 -0.30 -0.05 -0.14 -0.12  0.16  0.07  0.07  0.04  0.08 0.56 0.440 2.4
seeing          0.27  0.01  0.64  0.16 -0.25  0.09  0.04 -0.05 -0.04 -0.10  0.01  0.04  0.02 0.60 0.404 2.0
temperature     0.18  0.11  0.68  0.08 -0.25  0.06 -0.06 -0.03 -0.11  0.19  0.05  0.12  0.12 0.66 0.342 2.0
odors           0.37 -0.07  0.47  0.17 -0.24  0.06  0.01 -0.13  0.09 -0.06 -0.09  0.12  0.07 0.51 0.492 3.6
depth           0.22  0.25  0.53 -0.02 -0.11  0.01  0.04 -0.03 -0.03  0.09  0.04 -0.07  0.00 0.42 0.577 2.1
computations   -0.35  0.66  0.22 -0.42 -0.03  0.00 -0.07  0.12  0.00  0.07  0.14  0.00 -0.04 0.84 0.162 2.9
thoughts        0.67  0.26  0.08  0.30  0.15 -0.09  0.14 -0.04  0.04 -0.09  0.12  0.05  0.07 0.70 0.304 2.3
reasoning       0.26  0.61  0.34 -0.01  0.12  0.00  0.13 -0.09 -0.12 -0.08  0.02 -0.02 -0.09 0.62 0.378 2.5
remembering     0.04  0.49  0.57 -0.16  0.03 -0.02 -0.09  0.07 -0.05 -0.01 -0.03  0.02 -0.09 0.62 0.384 2.3
beliefs         0.48  0.57 -0.15  0.14  0.05  0.19  0.08 -0.14 -0.02  0.04  0.00 -0.01  0.09 0.67 0.327 2.8
hungry          0.64 -0.47  0.06  0.50 -0.07  0.07  0.05 -0.08 -0.01  0.02 -0.08  0.00 -0.01 0.91 0.092 3.0
tired           0.74 -0.21  0.13  0.39 -0.02  0.04  0.03  0.08  0.04  0.14 -0.07 -0.14 -0.10 0.83 0.171 2.1
pain            0.70 -0.37  0.11  0.48 -0.05  0.10  0.04 -0.01 -0.02 -0.04  0.11 -0.02 -0.07 0.91 0.088 2.6
nauseated       0.98 -0.07  0.00 -0.15  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00 1.00 0.005 1.1
safe            0.72 -0.02  0.10  0.36  0.15 -0.03 -0.40 -0.05 -0.03 -0.04 -0.05 -0.02  0.02 0.85 0.151 2.3
love            0.70  0.46 -0.19  0.26 -0.07 -0.02 -0.02  0.03 -0.01  0.01  0.03  0.05 -0.02 0.81 0.186 2.3
recognizing     0.07  0.61  0.50 -0.23 -0.05 -0.01  0.01  0.00  0.10 -0.15 -0.09 -0.17  0.00 0.76 0.245 2.8
communicating   0.15  0.41  0.52 -0.01  0.00  0.08 -0.03  0.00  0.02 -0.17 -0.03 -0.16  0.02 0.53 0.470 2.7
guilt           0.62  0.47 -0.24  0.17 -0.07  0.15  0.02 -0.03  0.13  0.00 -0.06  0.08 -0.05 0.75 0.252 2.8
disrespected    0.64  0.45 -0.21  0.10 -0.08  0.28 -0.06  0.11  0.09  0.00 -0.15  0.01  0.05 0.80 0.202 3.0
free_will       0.69 -0.02  0.06  0.39  0.11 -0.05  0.01  0.06 -0.03 -0.06  0.00  0.17  0.08 0.69 0.307 1.9
choices         0.32  0.26  0.55  0.14  0.23  0.02  0.08  0.07 -0.24 -0.04 -0.16  0.17 -0.10 0.68 0.320 4.1
self_restraint  0.50  0.40  0.13  0.12  0.22  0.05  0.04 -0.13  0.23  0.05 -0.08  0.08 -0.07 0.59 0.406 3.6
intentions      0.58  0.12  0.21  0.32  0.25 -0.02  0.05  0.09  0.05  0.26 -0.04 -0.03  0.07 0.64 0.360 3.1
goal            0.21  0.33  0.52  0.04  0.04 -0.01  0.19  0.20 -0.02  0.06 -0.16 -0.02  0.05 0.54 0.463 3.1
conscious       0.72 -0.03  0.09  0.33  0.08  0.02  0.07 -0.05  0.10 -0.01  0.10  0.01 -0.01 0.67 0.331 1.6
self_aware      0.63  0.20  0.10  0.31  0.08 -0.01  0.15  0.04  0.14 -0.04  0.10  0.02  0.00 0.61 0.388 2.2
desires         0.74  0.00  0.06  0.34  0.18 -0.01  0.11  0.09 -0.03 -0.01  0.03 -0.03  0.16 0.74 0.263 1.8
embarrassed     0.59  0.55 -0.31  0.16 -0.08  0.27 -0.03 -0.01 -0.15  0.01  0.03 -0.04 -0.01 0.88 0.122 3.4
emo_recog       0.45  0.61  0.02  0.07  0.09  0.17  0.13 -0.19  0.00 -0.01  0.04 -0.05  0.09 0.68 0.321 2.5
joy             0.80  0.32 -0.11  0.25 -0.07 -0.35  0.02 -0.03 -0.03  0.00 -0.02 -0.03  0.01 0.94 0.055 2.1
morality        0.31  0.62  0.08  0.07  0.20  0.07 -0.06 -0.28  0.01  0.16  0.09  0.00 -0.09 0.65 0.346 2.6
personality     0.53  0.51  0.08  0.19  0.04  0.06  0.10  0.01  0.08 -0.03  0.02  0.03 -0.11 0.62 0.385 2.6
pleasure        0.77  0.00  0.06  0.37  0.04  0.01 -0.01  0.19 -0.02  0.01  0.06 -0.06  0.07 0.79 0.210 1.6
pride           0.67  0.51 -0.22  0.17 -0.04  0.13 -0.02 -0.01 -0.03 -0.03 -0.02 -0.03  0.06 0.81 0.185 2.4

                        MR1  MR2  MR4  MR3  MR6  MR5  MR7  MR8  MR9 MR11 MR10 MR12 MR13
SS loadings           13.54 5.47 3.85 2.61 0.70 0.49 0.41 0.40 0.31 0.27 0.23 0.22 0.18
Proportion Var         0.34 0.14 0.10 0.07 0.02 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.00
Cumulative Var         0.34 0.48 0.57 0.64 0.65 0.67 0.68 0.69 0.69 0.70 0.71 0.71 0.72
Proportion Explained   0.47 0.19 0.13 0.09 0.02 0.02 0.01 0.01 0.01 0.01 0.01 0.01 0.01
Cumulative Proportion  0.47 0.66 0.80 0.89 0.91 0.93 0.94 0.96 0.97 0.98 0.99 0.99 1.00

Mean item complexity =  2.4
Test of the hypothesis that 13 factors are sufficient.

The degrees of freedom for the null model are  780  and the objective function was  36.39 with Chi Square of  14185
The degrees of freedom for the model are 338  and the objective function was  0.9 

The root mean square of the residuals (RMSR) is  0.01 
The df corrected root mean square of the residuals is  0.02 

The harmonic number of observations is  405 with the empirical chi square  67.74  with prob <  1 
The total number of observations was  405  with MLE Chi Square =  343.92  with prob <  0.4 

Tucker Lewis Index of factoring reliability =  0.999
RMSEA index =  0.014  and the 90 % confidence intervals are  NA 0.02
BIC =  -1685.39
Fit based upon off diagonal values = 1
Measures of factor score adequacy             
                                                MR1  MR2  MR4  MR3  MR6  MR5  MR7  MR8  MR9  MR11  MR10  MR12  MR13
Correlation of scores with factors             1.00 0.98 0.96 0.98 0.83 0.90 0.81 0.76 0.72  0.68  0.70  0.66  0.63
Multiple R square of scores with factors       1.00 0.96 0.92 0.95 0.69 0.81 0.65 0.58 0.51  0.46  0.50  0.44  0.40
Minimum correlation of possible factor scores  0.99 0.93 0.84 0.90 0.38 0.61 0.30 0.17 0.03 -0.07 -0.01 -0.12 -0.20
Factor Analysis using method =  minres
Call: fa(r = d1_all, nfactors = 13, rotate = "none", fm = "minres", 
    cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
                 MR1   MR2   MR4   MR3   MR6   MR5   MR7   MR8   MR9  MR11  MR10  MR12  MR13   h2    u2 com
happy           0.78  0.26 -0.08  0.29 -0.06 -0.20 -0.07  0.04  0.04  0.01  0.02  0.04 -0.06 0.82 0.179 1.8
depressed       0.75  0.38 -0.21  0.10 -0.11  0.01  0.03  0.10  0.04 -0.04 -0.04  0.09 -0.07 0.80 0.196 1.9
fear            0.74 -0.17  0.08  0.41  0.03  0.11 -0.12  0.09  0.02 -0.04  0.09 -0.01  0.00 0.80 0.202 1.9
angry           0.77  0.15 -0.05  0.23 -0.06  0.02 -0.01  0.16  0.08 -0.01  0.08  0.05  0.02 0.71 0.286 1.5
calm            0.74  0.03  0.11  0.25  0.11  0.00 -0.13  0.00  0.12 -0.01  0.03  0.05  0.00 0.67 0.325 1.5
sounds          0.11  0.16  0.59 -0.06 -0.30 -0.05 -0.14 -0.12  0.16  0.07  0.07  0.04  0.08 0.56 0.440 2.4
seeing          0.27  0.01  0.64  0.16 -0.25  0.09  0.04 -0.05 -0.04 -0.10  0.01  0.04  0.02 0.60 0.404 2.0
temperature     0.18  0.11  0.68  0.08 -0.25  0.06 -0.06 -0.03 -0.11  0.19  0.05  0.12  0.12 0.66 0.342 2.0
odors           0.37 -0.07  0.47  0.17 -0.24  0.06  0.01 -0.13  0.09 -0.06 -0.09  0.12  0.07 0.51 0.492 3.6
depth           0.22  0.25  0.53 -0.02 -0.11  0.01  0.04 -0.03 -0.03  0.09  0.04 -0.07  0.00 0.42 0.577 2.1
computations   -0.35  0.66  0.22 -0.42 -0.03  0.00 -0.07  0.12  0.00  0.07  0.14  0.00 -0.04 0.84 0.162 2.9
thoughts        0.67  0.26  0.08  0.30  0.15 -0.09  0.14 -0.04  0.04 -0.09  0.12  0.05  0.07 0.70 0.304 2.3
reasoning       0.26  0.61  0.34 -0.01  0.12  0.00  0.13 -0.09 -0.12 -0.08  0.02 -0.02 -0.09 0.62 0.378 2.5
remembering     0.04  0.49  0.57 -0.16  0.03 -0.02 -0.09  0.07 -0.05 -0.01 -0.03  0.02 -0.09 0.62 0.384 2.3
beliefs         0.48  0.57 -0.15  0.14  0.05  0.19  0.08 -0.14 -0.02  0.04  0.00 -0.01  0.09 0.67 0.327 2.8
hungry          0.64 -0.47  0.06  0.50 -0.07  0.07  0.05 -0.08 -0.01  0.02 -0.08  0.00 -0.01 0.91 0.092 3.0
tired           0.74 -0.21  0.13  0.39 -0.02  0.04  0.03  0.08  0.04  0.14 -0.07 -0.14 -0.10 0.83 0.171 2.1
pain            0.70 -0.37  0.11  0.48 -0.05  0.10  0.04 -0.01 -0.02 -0.04  0.11 -0.02 -0.07 0.91 0.088 2.6
nauseated       0.98 -0.07  0.00 -0.15  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00 1.00 0.005 1.1
safe            0.72 -0.02  0.10  0.36  0.15 -0.03 -0.40 -0.05 -0.03 -0.04 -0.05 -0.02  0.02 0.85 0.151 2.3
love            0.70  0.46 -0.19  0.26 -0.07 -0.02 -0.02  0.03 -0.01  0.01  0.03  0.05 -0.02 0.81 0.186 2.3
recognizing     0.07  0.61  0.50 -0.23 -0.05 -0.01  0.01  0.00  0.10 -0.15 -0.09 -0.17  0.00 0.76 0.245 2.8
communicating   0.15  0.41  0.52 -0.01  0.00  0.08 -0.03  0.00  0.02 -0.17 -0.03 -0.16  0.02 0.53 0.470 2.7
guilt           0.62  0.47 -0.24  0.17 -0.07  0.15  0.02 -0.03  0.13  0.00 -0.06  0.08 -0.05 0.75 0.252 2.8
disrespected    0.64  0.45 -0.21  0.10 -0.08  0.28 -0.06  0.11  0.09  0.00 -0.15  0.01  0.05 0.80 0.202 3.0
free_will       0.69 -0.02  0.06  0.39  0.11 -0.05  0.01  0.06 -0.03 -0.06  0.00  0.17  0.08 0.69 0.307 1.9
choices         0.32  0.26  0.55  0.14  0.23  0.02  0.08  0.07 -0.24 -0.04 -0.16  0.17 -0.10 0.68 0.320 4.1
self_restraint  0.50  0.40  0.13  0.12  0.22  0.05  0.04 -0.13  0.23  0.05 -0.08  0.08 -0.07 0.59 0.406 3.6
intentions      0.58  0.12  0.21  0.32  0.25 -0.02  0.05  0.09  0.05  0.26 -0.04 -0.03  0.07 0.64 0.360 3.1
goal            0.21  0.33  0.52  0.04  0.04 -0.01  0.19  0.20 -0.02  0.06 -0.16 -0.02  0.05 0.54 0.463 3.1
conscious       0.72 -0.03  0.09  0.33  0.08  0.02  0.07 -0.05  0.10 -0.01  0.10  0.01 -0.01 0.67 0.331 1.6
self_aware      0.63  0.20  0.10  0.31  0.08 -0.01  0.15  0.04  0.14 -0.04  0.10  0.02  0.00 0.61 0.388 2.2
desires         0.74  0.00  0.06  0.34  0.18 -0.01  0.11  0.09 -0.03 -0.01  0.03 -0.03  0.16 0.74 0.263 1.8
embarrassed     0.59  0.55 -0.31  0.16 -0.08  0.27 -0.03 -0.01 -0.15  0.01  0.03 -0.04 -0.01 0.88 0.122 3.4
emo_recog       0.45  0.61  0.02  0.07  0.09  0.17  0.13 -0.19  0.00 -0.01  0.04 -0.05  0.09 0.68 0.321 2.5
joy             0.80  0.32 -0.11  0.25 -0.07 -0.35  0.02 -0.03 -0.03  0.00 -0.02 -0.03  0.01 0.94 0.055 2.1
morality        0.31  0.62  0.08  0.07  0.20  0.07 -0.06 -0.28  0.01  0.16  0.09  0.00 -0.09 0.65 0.346 2.6
personality     0.53  0.51  0.08  0.19  0.04  0.06  0.10  0.01  0.08 -0.03  0.02  0.03 -0.11 0.62 0.385 2.6
pleasure        0.77  0.00  0.06  0.37  0.04  0.01 -0.01  0.19 -0.02  0.01  0.06 -0.06  0.07 0.79 0.210 1.6
pride           0.67  0.51 -0.22  0.17 -0.04  0.13 -0.02 -0.01 -0.03 -0.03 -0.02 -0.03  0.06 0.81 0.185 2.4

                        MR1  MR2  MR4  MR3  MR6  MR5  MR7  MR8  MR9 MR11 MR10 MR12 MR13
SS loadings           13.54 5.47 3.85 2.61 0.70 0.49 0.41 0.40 0.31 0.27 0.23 0.22 0.18
Proportion Var         0.34 0.14 0.10 0.07 0.02 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.00
Cumulative Var         0.34 0.48 0.57 0.64 0.65 0.67 0.68 0.69 0.69 0.70 0.71 0.71 0.72
Proportion Explained   0.47 0.19 0.13 0.09 0.02 0.02 0.01 0.01 0.01 0.01 0.01 0.01 0.01
Cumulative Proportion  0.47 0.66 0.80 0.89 0.91 0.93 0.94 0.96 0.97 0.98 0.99 0.99 1.00

Mean item complexity =  2.4
Test of the hypothesis that 13 factors are sufficient.

The degrees of freedom for the null model are  780  and the objective function was  36.39 with Chi Square of  14185
The degrees of freedom for the model are 338  and the objective function was  0.9 

The root mean square of the residuals (RMSR) is  0.01 
The df corrected root mean square of the residuals is  0.02 

The harmonic number of observations is  405 with the empirical chi square  67.74  with prob <  1 
The total number of observations was  405  with MLE Chi Square =  343.92  with prob <  0.4 

Tucker Lewis Index of factoring reliability =  0.999
RMSEA index =  0.014  and the 90 % confidence intervals are  NA 0.02
BIC =  -1685.39
Fit based upon off diagonal values = 1
Measures of factor score adequacy             
                                                MR1  MR2  MR4  MR3  MR6  MR5  MR7  MR8  MR9  MR11  MR10  MR12  MR13
Correlation of scores with factors             1.00 0.98 0.96 0.98 0.83 0.90 0.81 0.76 0.72  0.68  0.70  0.66  0.63
Multiple R square of scores with factors       1.00 0.96 0.92 0.95 0.69 0.81 0.65 0.58 0.51  0.46  0.50  0.44  0.40
Minimum correlation of possible factor scores  0.99 0.93 0.84 0.90 0.38 0.61 0.30 0.17 0.03 -0.07 -0.01 -0.12 -0.20
[1] 4
[1] 3

Step 2: Run EFA with varimax rotation

Factor Analysis using method =  minres
Call: fa(r = d1_all, nfactors = nfactors_d1_all, rotate = chosenRotType, 
    fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
                 MR1   MR2   MR3   h2   u2 com
happy           0.55  0.65  0.10 0.74 0.26 2.0
depressed       0.37  0.78  0.03 0.75 0.25 1.4
fear            0.82  0.28  0.06 0.76 0.24 1.2
angry           0.58  0.57  0.08 0.67 0.33 2.0
calm            0.65  0.41  0.17 0.62 0.38 1.9
sounds          0.06 -0.05  0.61 0.38 0.62 1.0
seeing          0.36 -0.07  0.61 0.51 0.49 1.7
temperature     0.21 -0.06  0.66 0.48 0.52 1.2
odors           0.45 -0.01  0.43 0.39 0.61 2.0
depth           0.11  0.11  0.62 0.40 0.60 1.1
computations   -0.74  0.19  0.44 0.78 0.22 1.8
thoughts        0.50  0.55  0.22 0.61 0.39 2.3
reasoning      -0.06  0.47  0.57 0.55 0.45 2.0
remembering    -0.20  0.17  0.72 0.59 0.41 1.3
beliefs         0.11  0.76  0.12 0.60 0.40 1.1
hungry          0.93  0.01 -0.08 0.87 0.13 1.0
tired           0.83  0.23  0.10 0.76 0.24 1.2
pain            0.93  0.10  0.01 0.87 0.13 1.0
nauseated       0.65  0.50  0.09 0.68 0.32 1.9
safe            0.70  0.36  0.13 0.63 0.37 1.6
love            0.37  0.81  0.06 0.79 0.21 1.4
recognizing    -0.29  0.29  0.71 0.67 0.33 1.7
communicating  -0.02  0.20  0.65 0.46 0.54 1.2
guilt           0.26  0.80  0.02 0.70 0.30 1.2
disrespected    0.25  0.78  0.04 0.68 0.32 1.2
free_will       0.70  0.37  0.09 0.63 0.37 1.5
choices         0.25  0.18  0.60 0.46 0.54 1.5
self_restraint  0.24  0.55  0.31 0.45 0.55 2.0
intentions      0.54  0.35  0.27 0.48 0.52 2.3
goal            0.09  0.17  0.62 0.42 0.58 1.2
conscious       0.70  0.36  0.12 0.64 0.36 1.6
self_aware      0.52  0.48  0.22 0.55 0.45 2.3
desires         0.69  0.40  0.11 0.66 0.34 1.7
embarrassed     0.19  0.85 -0.01 0.76 0.24 1.1
emo_recog       0.06  0.70  0.29 0.58 0.42 1.3
joy             0.51  0.70  0.10 0.76 0.24 1.9
morality       -0.04  0.60  0.32 0.47 0.53 1.5
personality     0.23  0.66  0.31 0.58 0.42 1.7
pleasure        0.74  0.43  0.11 0.74 0.26 1.7
pride           0.28  0.85  0.05 0.80 0.20 1.2

                       MR1  MR2  MR3
SS loadings           9.92 9.81 5.17
Proportion Var        0.25 0.25 0.13
Cumulative Var        0.25 0.49 0.62
Proportion Explained  0.40 0.39 0.21
Cumulative Proportion 0.40 0.79 1.00

Mean item complexity =  1.6
Test of the hypothesis that 3 factors are sufficient.

The degrees of freedom for the null model are  780  and the objective function was  36.39 with Chi Square of  14185
The degrees of freedom for the model are 663  and the objective function was  3.81 

The root mean square of the residuals (RMSR) is  0.03 
The df corrected root mean square of the residuals is  0.03 

The harmonic number of observations is  405 with the empirical chi square  500.89  with prob <  1 
The total number of observations was  405  with MLE Chi Square =  1475.92  with prob <  8.7e-64 

Tucker Lewis Index of factoring reliability =  0.928
RMSEA index =  0.057  and the 90 % confidence intervals are  0.051 0.059
BIC =  -2504.66
Fit based upon off diagonal values = 1
Measures of factor score adequacy             
                                                MR1  MR2  MR3
Correlation of scores with factors             0.98 0.98 0.95
Multiple R square of scores with factors       0.97 0.95 0.91
Minimum correlation of possible factor scores  0.93 0.91 0.81

back to TOC

Factor loadings table

Study 2

Design: 2 conditions (beetle, robot), between-subjects (replication of Study 1) Date conducted: 2016-01-12

Demographics

Joining, by = c("condition", "min_age", "max_age", "median_age", "mean_age", "sd_age")
joining character vector and factor, coercing into character vector

back to TOC

Exploratory factor analysis

Step 1: Run maximal EFA (without and with rotation)

Parallel analysis suggests that the number of factors =  3  and the number of components =  3 

Factor Analysis using method =  minres
Call: fa(r = d2_all, nfactors = 13, rotate = "none", fm = "minres", 
    cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
                 MR1   MR2   MR3   MR4   MR5   MR6   MR7  MR11   MR9   MR8  MR10  MR12  MR13   h2    u2 com
happy           0.84  0.15 -0.09 -0.22  0.04 -0.07 -0.02  0.04 -0.03  0.10 -0.01  0.06 -0.10 0.82 0.179 1.3
depressed       0.79  0.31 -0.27 -0.09 -0.32  0.11 -0.01  0.00 -0.05 -0.01 -0.01  0.01  0.01 0.93 0.072 2.0
fear            0.80 -0.32  0.09  0.00 -0.03 -0.02 -0.06 -0.01 -0.03  0.05  0.15  0.09  0.12 0.80 0.203 1.5
angry           0.78 -0.01 -0.04 -0.07  0.02 -0.14  0.02 -0.01 -0.09  0.01  0.15 -0.06  0.11 0.68 0.320 1.3
calm            0.73  0.01  0.16 -0.21  0.17 -0.04 -0.01  0.05  0.09  0.06 -0.06  0.11  0.01 0.66 0.339 1.5
sounds          0.12  0.17  0.68 -0.07 -0.10 -0.09  0.13 -0.01  0.03  0.12  0.12  0.01 -0.02 0.59 0.414 1.6
seeing          0.37 -0.05  0.65  0.14 -0.07 -0.06  0.00 -0.14 -0.05  0.06 -0.10  0.08 -0.07 0.63 0.367 2.1
temperature     0.25  0.00  0.61  0.09 -0.24 -0.15 -0.09  0.15  0.13  0.00  0.02 -0.05 -0.08 0.59 0.412 2.3
odors           0.44 -0.13  0.52  0.20 -0.25 -0.11 -0.23  0.17  0.09  0.01 -0.03 -0.09  0.05 0.69 0.307 4.1
depth           0.16  0.23  0.51  0.10 -0.10 -0.11 -0.09  0.14  0.00 -0.07  0.08 -0.04  0.06 0.41 0.585 2.4
computations   -0.39  0.75  0.28 -0.09 -0.05 -0.05  0.08  0.02  0.06 -0.03  0.09  0.00  0.01 0.83 0.175 2.0
thoughts        0.75  0.10  0.11 -0.04  0.17  0.27  0.01  0.10  0.04 -0.02 -0.04 -0.04  0.00 0.71 0.295 1.5
reasoning       0.24  0.55  0.34  0.11  0.09  0.16 -0.11  0.10 -0.02 -0.10 -0.02  0.06 -0.08 0.56 0.437 3.0
remembering     0.06  0.48  0.58 -0.07  0.01  0.01  0.10 -0.11  0.10  0.06 -0.06  0.06 -0.07 0.63 0.369 2.3
beliefs         0.49  0.43 -0.07  0.18 -0.02  0.08  0.17  0.14  0.00  0.02 -0.12  0.20  0.00 0.58 0.419 3.4
hungry          0.69 -0.64  0.03  0.16 -0.06 -0.05  0.00 -0.02  0.02  0.01 -0.06  0.01 -0.06 0.92 0.081 2.2
tired           0.77 -0.39  0.11 -0.01  0.01 -0.03  0.07 -0.04 -0.07 -0.03  0.05  0.03  0.10 0.79 0.211 1.6
pain            0.74 -0.52  0.07  0.08 -0.03 -0.02  0.02 -0.05  0.01 -0.07  0.07  0.02 -0.03 0.84 0.157 1.9
nauseated       0.73 -0.08 -0.03 -0.02 -0.01 -0.08  0.03 -0.01  0.00 -0.07  0.06  0.11  0.02 0.57 0.431 1.1
safe            0.76 -0.17  0.11 -0.04  0.16 -0.04 -0.07  0.10 -0.06  0.16 -0.05  0.09  0.08 0.71 0.291 1.5
love            0.75  0.27 -0.20 -0.01 -0.02  0.02  0.12 -0.01  0.11 -0.05  0.02 -0.02 -0.12 0.71 0.287 1.6
recognizing     0.07  0.63  0.44 -0.04  0.00 -0.07  0.01 -0.03  0.03  0.04  0.06  0.07  0.01 0.61 0.391 1.9
communicating   0.25  0.28  0.62  0.02 -0.15 -0.03  0.15 -0.19  0.00 -0.03 -0.01  0.01  0.09 0.62 0.378 2.4
guilt           0.64  0.47 -0.32  0.22  0.04 -0.12  0.02 -0.06  0.10  0.02 -0.10 -0.03  0.13 0.84 0.157 3.1
disrespected    0.63  0.36 -0.24  0.20  0.06 -0.08 -0.05  0.01 -0.05  0.09  0.19 -0.10 -0.07 0.70 0.299 2.7
free_will       0.68 -0.27  0.14  0.05 -0.01  0.18  0.11 -0.13  0.03  0.02  0.05 -0.13 -0.06 0.65 0.348 1.9
choices         0.37  0.22  0.59 -0.01  0.04  0.08  0.07 -0.08 -0.07 -0.06 -0.02 -0.01 -0.06 0.56 0.442 2.3
self_restraint  0.42  0.40  0.14  0.17  0.15  0.13 -0.06  0.02 -0.01 -0.04 -0.08 -0.05  0.07 0.45 0.554 3.3
intentions      0.63 -0.06  0.31  0.10  0.12  0.16  0.23  0.08 -0.19  0.03 -0.07 -0.15  0.06 0.68 0.316 2.6
goal            0.30  0.23  0.59  0.00 -0.04 -0.02  0.05  0.08 -0.15  0.03 -0.16 -0.11  0.08 0.57 0.425 2.4
conscious       0.74 -0.25  0.15 -0.04  0.11  0.27 -0.04  0.02  0.11  0.13  0.02  0.05  0.04 0.76 0.245 1.9
self_aware      0.70  0.15  0.12 -0.02  0.10  0.27 -0.17 -0.08  0.16  0.08  0.11 -0.11  0.01 0.70 0.304 2.0
desires         0.80 -0.06  0.06 -0.02  0.10 -0.01  0.15  0.15 -0.07 -0.18  0.07  0.00 -0.07 0.74 0.256 1.4
embarrassed     0.61  0.44 -0.31  0.22  0.01 -0.08  0.10  0.02  0.12  0.04 -0.06 -0.02  0.00 0.74 0.257 3.0
emo_recog       0.50  0.54  0.07  0.20  0.13 -0.01 -0.18 -0.06 -0.11 -0.15  0.02  0.12 -0.02 0.69 0.312 3.1
joy             0.84  0.13 -0.05 -0.28  0.09 -0.17 -0.08 -0.02 -0.05  0.06 -0.07 -0.09 -0.05 0.87 0.134 1.5
morality        0.31  0.59  0.11  0.26  0.14  0.07 -0.27 -0.09 -0.13 -0.12 -0.01  0.01 -0.05 0.65 0.345 3.1
personality     0.58  0.43  0.11 -0.11  0.07  0.00 -0.08 -0.14 -0.07 -0.01 -0.05 -0.02 -0.03 0.59 0.414 2.3
pleasure        0.84 -0.11  0.02 -0.23  0.10 -0.05  0.00  0.00  0.13 -0.22 -0.03 -0.02  0.06 0.85 0.150 1.4
pride           0.69  0.39 -0.25  0.24  0.12 -0.07  0.11  0.03  0.00  0.06  0.12  0.00 -0.04 0.80 0.201 2.5

                        MR1  MR2  MR3  MR4  MR5  MR6  MR7 MR11  MR9  MR8 MR10 MR12 MR13
SS loadings           14.61 4.99 4.33 0.77 0.53 0.52 0.47 0.30 0.27 0.26 0.26 0.23 0.17
Proportion Var         0.37 0.12 0.11 0.02 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.00
Cumulative Var         0.37 0.49 0.60 0.62 0.63 0.64 0.66 0.66 0.67 0.68 0.68 0.69 0.69
Proportion Explained   0.53 0.18 0.16 0.03 0.02 0.02 0.02 0.01 0.01 0.01 0.01 0.01 0.01
Cumulative Proportion  0.53 0.71 0.86 0.89 0.91 0.93 0.95 0.96 0.97 0.98 0.99 0.99 1.00

Mean item complexity =  2.2
Test of the hypothesis that 13 factors are sufficient.

The degrees of freedom for the null model are  780  and the objective function was  33.07 with Chi Square of  12924.08
The degrees of freedom for the model are 338  and the objective function was  0.92 

The root mean square of the residuals (RMSR) is  0.01 
The df corrected root mean square of the residuals is  0.02 

The harmonic number of observations is  406 with the empirical chi square  77.28  with prob <  1 
The total number of observations was  406  with MLE Chi Square =  351.09  with prob <  0.3 

Tucker Lewis Index of factoring reliability =  0.997
RMSEA index =  0.016  and the 90 % confidence intervals are  NA 0.021
BIC =  -1679.06
Fit based upon off diagonal values = 1
Measures of factor score adequacy             
                                                MR1  MR2  MR3  MR4  MR5  MR6  MR7  MR11  MR9  MR8  MR10  MR12  MR13
Correlation of scores with factors             0.99 0.98 0.96 0.89 0.86 0.82 0.77  0.68 0.71 0.72  0.70  0.65  0.64
Multiple R square of scores with factors       0.99 0.96 0.93 0.78 0.74 0.67 0.60  0.47 0.50 0.52  0.49  0.42  0.41
Minimum correlation of possible factor scores  0.97 0.92 0.86 0.57 0.48 0.33 0.20 -0.06 0.00 0.03 -0.02 -0.15 -0.18
Factor Analysis using method =  minres
Call: fa(r = d2_all, nfactors = 13, rotate = "none", fm = "minres", 
    cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
                 MR1   MR2   MR3   MR4   MR5   MR6   MR7  MR11   MR9   MR8  MR10  MR12  MR13   h2    u2 com
happy           0.84  0.15 -0.09 -0.22  0.04 -0.07 -0.02  0.04 -0.03  0.10 -0.01  0.06 -0.10 0.82 0.179 1.3
depressed       0.79  0.31 -0.27 -0.09 -0.32  0.11 -0.01  0.00 -0.05 -0.01 -0.01  0.01  0.01 0.93 0.072 2.0
fear            0.80 -0.32  0.09  0.00 -0.03 -0.02 -0.06 -0.01 -0.03  0.05  0.15  0.09  0.12 0.80 0.203 1.5
angry           0.78 -0.01 -0.04 -0.07  0.02 -0.14  0.02 -0.01 -0.09  0.01  0.15 -0.06  0.11 0.68 0.320 1.3
calm            0.73  0.01  0.16 -0.21  0.17 -0.04 -0.01  0.05  0.09  0.06 -0.06  0.11  0.01 0.66 0.339 1.5
sounds          0.12  0.17  0.68 -0.07 -0.10 -0.09  0.13 -0.01  0.03  0.12  0.12  0.01 -0.02 0.59 0.414 1.6
seeing          0.37 -0.05  0.65  0.14 -0.07 -0.06  0.00 -0.14 -0.05  0.06 -0.10  0.08 -0.07 0.63 0.367 2.1
temperature     0.25  0.00  0.61  0.09 -0.24 -0.15 -0.09  0.15  0.13  0.00  0.02 -0.05 -0.08 0.59 0.412 2.3
odors           0.44 -0.13  0.52  0.20 -0.25 -0.11 -0.23  0.17  0.09  0.01 -0.03 -0.09  0.05 0.69 0.307 4.1
depth           0.16  0.23  0.51  0.10 -0.10 -0.11 -0.09  0.14  0.00 -0.07  0.08 -0.04  0.06 0.41 0.585 2.4
computations   -0.39  0.75  0.28 -0.09 -0.05 -0.05  0.08  0.02  0.06 -0.03  0.09  0.00  0.01 0.83 0.175 2.0
thoughts        0.75  0.10  0.11 -0.04  0.17  0.27  0.01  0.10  0.04 -0.02 -0.04 -0.04  0.00 0.71 0.295 1.5
reasoning       0.24  0.55  0.34  0.11  0.09  0.16 -0.11  0.10 -0.02 -0.10 -0.02  0.06 -0.08 0.56 0.437 3.0
remembering     0.06  0.48  0.58 -0.07  0.01  0.01  0.10 -0.11  0.10  0.06 -0.06  0.06 -0.07 0.63 0.369 2.3
beliefs         0.49  0.43 -0.07  0.18 -0.02  0.08  0.17  0.14  0.00  0.02 -0.12  0.20  0.00 0.58 0.419 3.4
hungry          0.69 -0.64  0.03  0.16 -0.06 -0.05  0.00 -0.02  0.02  0.01 -0.06  0.01 -0.06 0.92 0.081 2.2
tired           0.77 -0.39  0.11 -0.01  0.01 -0.03  0.07 -0.04 -0.07 -0.03  0.05  0.03  0.10 0.79 0.211 1.6
pain            0.74 -0.52  0.07  0.08 -0.03 -0.02  0.02 -0.05  0.01 -0.07  0.07  0.02 -0.03 0.84 0.157 1.9
nauseated       0.73 -0.08 -0.03 -0.02 -0.01 -0.08  0.03 -0.01  0.00 -0.07  0.06  0.11  0.02 0.57 0.431 1.1
safe            0.76 -0.17  0.11 -0.04  0.16 -0.04 -0.07  0.10 -0.06  0.16 -0.05  0.09  0.08 0.71 0.291 1.5
love            0.75  0.27 -0.20 -0.01 -0.02  0.02  0.12 -0.01  0.11 -0.05  0.02 -0.02 -0.12 0.71 0.287 1.6
recognizing     0.07  0.63  0.44 -0.04  0.00 -0.07  0.01 -0.03  0.03  0.04  0.06  0.07  0.01 0.61 0.391 1.9
communicating   0.25  0.28  0.62  0.02 -0.15 -0.03  0.15 -0.19  0.00 -0.03 -0.01  0.01  0.09 0.62 0.378 2.4
guilt           0.64  0.47 -0.32  0.22  0.04 -0.12  0.02 -0.06  0.10  0.02 -0.10 -0.03  0.13 0.84 0.157 3.1
disrespected    0.63  0.36 -0.24  0.20  0.06 -0.08 -0.05  0.01 -0.05  0.09  0.19 -0.10 -0.07 0.70 0.299 2.7
free_will       0.68 -0.27  0.14  0.05 -0.01  0.18  0.11 -0.13  0.03  0.02  0.05 -0.13 -0.06 0.65 0.348 1.9
choices         0.37  0.22  0.59 -0.01  0.04  0.08  0.07 -0.08 -0.07 -0.06 -0.02 -0.01 -0.06 0.56 0.442 2.3
self_restraint  0.42  0.40  0.14  0.17  0.15  0.13 -0.06  0.02 -0.01 -0.04 -0.08 -0.05  0.07 0.45 0.554 3.3
intentions      0.63 -0.06  0.31  0.10  0.12  0.16  0.23  0.08 -0.19  0.03 -0.07 -0.15  0.06 0.68 0.316 2.6
goal            0.30  0.23  0.59  0.00 -0.04 -0.02  0.05  0.08 -0.15  0.03 -0.16 -0.11  0.08 0.57 0.425 2.4
conscious       0.74 -0.25  0.15 -0.04  0.11  0.27 -0.04  0.02  0.11  0.13  0.02  0.05  0.04 0.76 0.245 1.9
self_aware      0.70  0.15  0.12 -0.02  0.10  0.27 -0.17 -0.08  0.16  0.08  0.11 -0.11  0.01 0.70 0.304 2.0
desires         0.80 -0.06  0.06 -0.02  0.10 -0.01  0.15  0.15 -0.07 -0.18  0.07  0.00 -0.07 0.74 0.256 1.4
embarrassed     0.61  0.44 -0.31  0.22  0.01 -0.08  0.10  0.02  0.12  0.04 -0.06 -0.02  0.00 0.74 0.257 3.0
emo_recog       0.50  0.54  0.07  0.20  0.13 -0.01 -0.18 -0.06 -0.11 -0.15  0.02  0.12 -0.02 0.69 0.312 3.1
joy             0.84  0.13 -0.05 -0.28  0.09 -0.17 -0.08 -0.02 -0.05  0.06 -0.07 -0.09 -0.05 0.87 0.134 1.5
morality        0.31  0.59  0.11  0.26  0.14  0.07 -0.27 -0.09 -0.13 -0.12 -0.01  0.01 -0.05 0.65 0.345 3.1
personality     0.58  0.43  0.11 -0.11  0.07  0.00 -0.08 -0.14 -0.07 -0.01 -0.05 -0.02 -0.03 0.59 0.414 2.3
pleasure        0.84 -0.11  0.02 -0.23  0.10 -0.05  0.00  0.00  0.13 -0.22 -0.03 -0.02  0.06 0.85 0.150 1.4
pride           0.69  0.39 -0.25  0.24  0.12 -0.07  0.11  0.03  0.00  0.06  0.12  0.00 -0.04 0.80 0.201 2.5

                        MR1  MR2  MR3  MR4  MR5  MR6  MR7 MR11  MR9  MR8 MR10 MR12 MR13
SS loadings           14.61 4.99 4.33 0.77 0.53 0.52 0.47 0.30 0.27 0.26 0.26 0.23 0.17
Proportion Var         0.37 0.12 0.11 0.02 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.00
Cumulative Var         0.37 0.49 0.60 0.62 0.63 0.64 0.66 0.66 0.67 0.68 0.68 0.69 0.69
Proportion Explained   0.53 0.18 0.16 0.03 0.02 0.02 0.02 0.01 0.01 0.01 0.01 0.01 0.01
Cumulative Proportion  0.53 0.71 0.86 0.89 0.91 0.93 0.95 0.96 0.97 0.98 0.99 0.99 1.00

Mean item complexity =  2.2
Test of the hypothesis that 13 factors are sufficient.

The degrees of freedom for the null model are  780  and the objective function was  33.07 with Chi Square of  12924.08
The degrees of freedom for the model are 338  and the objective function was  0.92 

The root mean square of the residuals (RMSR) is  0.01 
The df corrected root mean square of the residuals is  0.02 

The harmonic number of observations is  406 with the empirical chi square  77.28  with prob <  1 
The total number of observations was  406  with MLE Chi Square =  351.09  with prob <  0.3 

Tucker Lewis Index of factoring reliability =  0.997
RMSEA index =  0.016  and the 90 % confidence intervals are  NA 0.021
BIC =  -1679.06
Fit based upon off diagonal values = 1
Measures of factor score adequacy             
                                                MR1  MR2  MR3  MR4  MR5  MR6  MR7  MR11  MR9  MR8  MR10  MR12  MR13
Correlation of scores with factors             0.99 0.98 0.96 0.89 0.86 0.82 0.77  0.68 0.71 0.72  0.70  0.65  0.64
Multiple R square of scores with factors       0.99 0.96 0.93 0.78 0.74 0.67 0.60  0.47 0.50 0.52  0.49  0.42  0.41
Minimum correlation of possible factor scores  0.97 0.92 0.86 0.57 0.48 0.33 0.20 -0.06 0.00 0.03 -0.02 -0.15 -0.18
[1] 3
[1] 3

Step 2: Run EFA with varimax rotation

Factor Analysis using method =  minres
Call: fa(r = d2_all, nfactors = nfactors_d2_all, rotate = chosenRotType, 
    fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
                 MR1   MR2   MR3   h2   u2 com
happy           0.55  0.64  0.09 0.72 0.28 2.0
depressed       0.39  0.75  0.00 0.71 0.29 1.5
fear            0.83  0.23  0.09 0.75 0.25 1.2
angry           0.60  0.49  0.08 0.61 0.39 2.0
calm            0.57  0.41  0.25 0.55 0.45 2.2
sounds          0.07 -0.05  0.72 0.52 0.48 1.0
seeing          0.39 -0.03  0.63 0.56 0.44 1.7
temperature     0.26 -0.07  0.60 0.43 0.57 1.4
odors           0.47 -0.01  0.48 0.45 0.55 2.0
depth           0.04  0.08  0.58 0.34 0.66 1.0
computations   -0.73  0.18  0.47 0.79 0.21 1.8
thoughts        0.53  0.50  0.23 0.58 0.42 2.4
reasoning      -0.11  0.42  0.52 0.47 0.53 2.0
remembering    -0.19  0.17  0.72 0.58 0.42 1.3
beliefs         0.11  0.64  0.15 0.44 0.56 1.2
hungry          0.92 -0.02 -0.10 0.86 0.14 1.0
tired           0.86  0.16  0.08 0.77 0.23 1.1
pain            0.90  0.07 -0.01 0.82 0.18 1.0
nauseated       0.61  0.40  0.06 0.54 0.46 1.7
safe            0.70  0.32  0.14 0.62 0.38 1.5
love            0.39  0.72  0.02 0.66 0.34 1.5
recognizing    -0.29  0.33  0.63 0.59 0.41 2.0
communicating   0.09  0.12  0.72 0.54 0.46 1.1
guilt           0.17  0.84 -0.04 0.73 0.27 1.1
disrespected    0.24  0.74 -0.01 0.60 0.40 1.2
free_will       0.71  0.18  0.14 0.56 0.44 1.2
choices         0.21  0.17  0.67 0.53 0.47 1.3
self_restraint  0.09  0.51  0.31 0.37 0.63 1.7
intentions      0.56  0.25  0.34 0.50 0.50 2.1
goal            0.16  0.13  0.67 0.49 0.51 1.2
conscious       0.74  0.23  0.15 0.62 0.38 1.3
self_aware      0.46  0.49  0.25 0.52 0.48 2.5
desires         0.66  0.43  0.14 0.64 0.36 1.8
embarrassed     0.16  0.80 -0.05 0.67 0.33 1.1
emo_recog       0.07  0.67  0.31 0.55 0.45 1.4
joy             0.56  0.61  0.12 0.69 0.31 2.1
morality       -0.11  0.57  0.33 0.45 0.55 1.7
personality     0.20  0.61  0.33 0.53 0.47 1.8
pleasure        0.71  0.43  0.10 0.70 0.30 1.7
pride           0.26  0.80 -0.01 0.71 0.29 1.2

                       MR1  MR2  MR3
SS loadings           9.82 8.40 5.55
Proportion Var        0.25 0.21 0.14
Cumulative Var        0.25 0.46 0.59
Proportion Explained  0.41 0.35 0.23
Cumulative Proportion 0.41 0.77 1.00

Mean item complexity =  1.6
Test of the hypothesis that 3 factors are sufficient.

The degrees of freedom for the null model are  780  and the objective function was  33.07 with Chi Square of  12924.08
The degrees of freedom for the model are 663  and the objective function was  3.93 

The root mean square of the residuals (RMSR) is  0.03 
The df corrected root mean square of the residuals is  0.03 

The harmonic number of observations is  406 with the empirical chi square  607.3  with prob <  0.94 
The total number of observations was  406  with MLE Chi Square =  1526.24  with prob <  6.5e-70 

Tucker Lewis Index of factoring reliability =  0.916
RMSEA index =  0.059  and the 90 % confidence intervals are  0.053 0.06
BIC =  -2455.97
Fit based upon off diagonal values = 0.99
Measures of factor score adequacy             
                                                MR1  MR2  MR3
Correlation of scores with factors             0.98 0.97 0.96
Multiple R square of scores with factors       0.96 0.94 0.92
Minimum correlation of possible factor scores  0.93 0.89 0.83

back to TOC

Factor loadings table

Study 3

Design: 2 conditions (beetle, robot), within-subjects Date conducted: 2016-01-10

Demographics

NAs introduced by coercion

back to TOC

Exploratory factor analysis

Step 1: Run maximal EFA (without and with rotation)

Parallel analysis suggests that the number of factors =  3  and the number of components =  3 

Factor Analysis using method =  minres
Call: fa(r = d3_all, nfactors = 13, rotate = "none", fm = "minres", 
    cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
                 MR1   MR2   MR3   MR4   MR5   MR7   MR6   MR9   MR8  MR10  MR12  MR11  MR13   h2    u2 com
happy           0.63  0.62 -0.13 -0.05 -0.20  0.01 -0.24 -0.07 -0.07  0.00  0.02 -0.01  0.00 0.91 0.088 2.6
depressed       0.50  0.60 -0.24  0.16 -0.10  0.00  0.12  0.08 -0.01  0.05 -0.04  0.05 -0.01 0.74 0.262 2.7
fear            0.80  0.27 -0.02 -0.19 -0.04 -0.03  0.03  0.00  0.02  0.04  0.03  0.06  0.02 0.76 0.236 1.4
angry           0.62  0.53 -0.14 -0.12 -0.09 -0.01  0.06 -0.02  0.03  0.02  0.01 -0.07  0.06 0.72 0.275 2.3
calm            0.66  0.47  0.05 -0.14 -0.05 -0.07 -0.06  0.04  0.04  0.12 -0.05  0.12  0.04 0.72 0.282 2.2
sounds          0.18  0.24  0.61  0.00 -0.22  0.25 -0.04  0.07 -0.06 -0.08 -0.17 -0.04  0.03 0.63 0.371 2.6
seeing          0.35  0.15  0.54  0.00 -0.10  0.18 -0.05  0.07  0.01  0.02 -0.05 -0.01  0.02 0.49 0.514 2.4
temperature     0.38  0.15  0.59  0.00 -0.19  0.13  0.14 -0.08 -0.01 -0.14  0.09  0.07  0.03 0.63 0.375 2.7
odors           0.54  0.12  0.41  0.03 -0.07  0.29  0.04 -0.05  0.06 -0.01  0.12  0.04 -0.04 0.59 0.410 2.9
depth           0.23  0.30  0.50  0.08 -0.08  0.04  0.21  0.00 -0.01 -0.06 -0.08  0.10 -0.10 0.48 0.521 3.0
computations   -0.75  0.31  0.15  0.17 -0.03 -0.22  0.03 -0.01  0.02 -0.21  0.04  0.08  0.02 0.82 0.176 2.0
thoughts        0.58  0.57  0.10 -0.14  0.12 -0.04 -0.13  0.10  0.12 -0.03 -0.10 -0.03  0.00 0.76 0.239 2.6
reasoning      -0.02  0.61  0.35  0.17  0.08 -0.20 -0.07  0.11  0.05  0.02 -0.05  0.01 -0.06 0.59 0.405 2.3
remembering    -0.10  0.47  0.49  0.10 -0.07 -0.12  0.11 -0.04 -0.05  0.06 -0.02 -0.20  0.06 0.57 0.435 2.9
beliefs         0.25  0.59 -0.13  0.19  0.19  0.08  0.10 -0.25 -0.10 -0.07 -0.08  0.01  0.00 0.59 0.408 2.7
hungry          0.99 -0.15  0.01  0.03  0.00 -0.01  0.00  0.00  0.00  0.00  0.00  0.00  0.00 1.00 0.005 1.0
tired           0.85  0.17 -0.04 -0.12 -0.03  0.01  0.09  0.00 -0.06  0.04  0.08  0.16  0.03 0.81 0.187 1.3
pain            0.89  0.01  0.00 -0.15 -0.02  0.10  0.05  0.04  0.00  0.01  0.03  0.00 -0.04 0.83 0.167 1.1
nauseated       0.70  0.38 -0.12 -0.08 -0.12 -0.04  0.24  0.18 -0.06  0.01 -0.01  0.10 -0.05 0.78 0.222 2.2
safe            0.72  0.29  0.04 -0.13  0.01  0.03 -0.05  0.07  0.02  0.08  0.04  0.00  0.07 0.65 0.351 1.5
love            0.56  0.61 -0.14  0.07 -0.01 -0.03  0.08  0.15 -0.21 -0.03  0.02 -0.15 -0.07 0.81 0.190 2.7
recognizing    -0.19  0.57  0.45  0.18 -0.11 -0.06 -0.08  0.14  0.09  0.09 -0.02  0.00  0.01 0.65 0.352 2.9
communicating  -0.05  0.39  0.47  0.19 -0.03 -0.08  0.00 -0.02 -0.01  0.15  0.11 -0.04  0.04 0.45 0.548 2.8
guilt           0.36  0.64 -0.24  0.22  0.01  0.10  0.05  0.01  0.06 -0.04 -0.03 -0.04  0.01 0.66 0.335 2.3
disrespected    0.37  0.63 -0.23  0.21  0.04  0.14  0.18 -0.06  0.03  0.05 -0.13 -0.06  0.09 0.72 0.277 2.8
free_will       0.73  0.35  0.05 -0.23  0.25  0.05 -0.08  0.05 -0.18 -0.14 -0.02  0.02  0.07 0.84 0.159 2.3
choices         0.31  0.41  0.46 -0.05  0.13 -0.12 -0.05 -0.06 -0.01  0.06  0.02  0.04  0.09 0.53 0.468 3.4
self_restraint  0.29  0.58  0.02  0.03  0.14 -0.11  0.06 -0.07 -0.15  0.15 -0.11  0.05  0.02 0.53 0.474 2.2
intentions      0.57  0.37  0.22 -0.20  0.22 -0.10  0.08 -0.05  0.07  0.00  0.04 -0.13  0.03 0.64 0.357 3.2
goal            0.20  0.41  0.43  0.02 -0.04 -0.09  0.13 -0.13 -0.11  0.09  0.12 -0.11  0.05 0.48 0.517 3.7
conscious       0.73  0.36  0.05 -0.19  0.15  0.03 -0.02  0.01  0.09 -0.02 -0.05  0.01 -0.16 0.76 0.239 1.9
self_aware      0.54  0.48  0.06 -0.15  0.18  0.04 -0.06  0.04  0.15  0.02 -0.06  0.09  0.10 0.64 0.362 2.8
desires         0.75  0.39  0.02 -0.28  0.06 -0.01  0.15 -0.10  0.08 -0.04  0.06 -0.06 -0.05 0.84 0.156 2.1
embarrassed     0.35  0.60 -0.28  0.25  0.03  0.10  0.00  0.07  0.21 -0.15  0.06 -0.04  0.08 0.73 0.274 3.3
emo_recog       0.24  0.66  0.07  0.21  0.26  0.09 -0.13  0.02 -0.01  0.09  0.16 -0.01 -0.15 0.69 0.310 2.4
joy             0.62  0.61 -0.15 -0.02 -0.20 -0.07 -0.02 -0.06  0.06 -0.07 -0.03  0.02 -0.08 0.84 0.162 2.5
morality        0.05  0.58  0.14  0.35  0.26  0.04 -0.06 -0.19 -0.07  0.05 -0.08  0.15 -0.11 0.63 0.366 3.0
personality     0.33  0.67  0.09  0.05  0.10  0.01 -0.07  0.11  0.07  0.01  0.12 -0.05 -0.01 0.61 0.386 1.8
pleasure        0.77  0.40 -0.07 -0.12 -0.08 -0.06  0.09 -0.11  0.05  0.05 -0.06 -0.02  0.02 0.81 0.194 1.8
pride           0.40  0.65 -0.24  0.18  0.07  0.06  0.04  0.03 -0.01  0.06  0.12  0.08  0.12 0.72 0.278 2.5

                        MR1  MR2  MR3  MR4  MR5  MR7  MR6  MR9  MR8 MR10 MR12 MR11 MR13
SS loadings           11.73 8.81 3.15 0.97 0.67 0.46 0.41 0.31 0.28 0.25 0.24 0.24 0.17
Proportion Var         0.29 0.22 0.08 0.02 0.02 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.00
Cumulative Var         0.29 0.51 0.59 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.68 0.69 0.69
Proportion Explained   0.42 0.32 0.11 0.04 0.02 0.02 0.01 0.01 0.01 0.01 0.01 0.01 0.01
Cumulative Proportion  0.42 0.74 0.86 0.89 0.92 0.93 0.95 0.96 0.97 0.98 0.99 0.99 1.00

Mean item complexity =  2.4
Test of the hypothesis that 13 factors are sufficient.

The degrees of freedom for the null model are  780  and the objective function was  34.22 with Chi Square of  13170.85
The degrees of freedom for the model are 338  and the objective function was  0.95 

The root mean square of the residuals (RMSR) is  0.01 
The df corrected root mean square of the residuals is  0.02 

The harmonic number of observations is  400 with the empirical chi square  79.31  with prob <  1 
The total number of observations was  400  with MLE Chi Square =  358.44  with prob <  0.21 

Tucker Lewis Index of factoring reliability =  0.996
RMSEA index =  0.018  and the 90 % confidence intervals are  NA 0.023
BIC =  -1666.68
Fit based upon off diagonal values = 1
Measures of factor score adequacy             
                                                MR1  MR2  MR3  MR4  MR5  MR7  MR6  MR9  MR8  MR10  MR12  MR11  MR13
Correlation of scores with factors             1.00 0.99 0.94 0.89 0.85 0.77 0.81 0.72 0.73  0.69  0.65  0.68  0.61
Multiple R square of scores with factors       1.00 0.97 0.89 0.80 0.73 0.59 0.65 0.52 0.53  0.48  0.42  0.46  0.37
Minimum correlation of possible factor scores  0.99 0.95 0.78 0.59 0.45 0.18 0.31 0.05 0.06 -0.04 -0.16 -0.09 -0.25
Factor Analysis using method =  minres
Call: fa(r = d3_all, nfactors = 13, rotate = "none", fm = "minres", 
    cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
                 MR1   MR2   MR3   MR4   MR5   MR7   MR6   MR9   MR8  MR10  MR12  MR11  MR13   h2    u2 com
happy           0.63  0.62 -0.13 -0.05 -0.20  0.01 -0.24 -0.07 -0.07  0.00  0.02 -0.01  0.00 0.91 0.088 2.6
depressed       0.50  0.60 -0.24  0.16 -0.10  0.00  0.12  0.08 -0.01  0.05 -0.04  0.05 -0.01 0.74 0.262 2.7
fear            0.80  0.27 -0.02 -0.19 -0.04 -0.03  0.03  0.00  0.02  0.04  0.03  0.06  0.02 0.76 0.236 1.4
angry           0.62  0.53 -0.14 -0.12 -0.09 -0.01  0.06 -0.02  0.03  0.02  0.01 -0.07  0.06 0.72 0.275 2.3
calm            0.66  0.47  0.05 -0.14 -0.05 -0.07 -0.06  0.04  0.04  0.12 -0.05  0.12  0.04 0.72 0.282 2.2
sounds          0.18  0.24  0.61  0.00 -0.22  0.25 -0.04  0.07 -0.06 -0.08 -0.17 -0.04  0.03 0.63 0.371 2.6
seeing          0.35  0.15  0.54  0.00 -0.10  0.18 -0.05  0.07  0.01  0.02 -0.05 -0.01  0.02 0.49 0.514 2.4
temperature     0.38  0.15  0.59  0.00 -0.19  0.13  0.14 -0.08 -0.01 -0.14  0.09  0.07  0.03 0.63 0.375 2.7
odors           0.54  0.12  0.41  0.03 -0.07  0.29  0.04 -0.05  0.06 -0.01  0.12  0.04 -0.04 0.59 0.410 2.9
depth           0.23  0.30  0.50  0.08 -0.08  0.04  0.21  0.00 -0.01 -0.06 -0.08  0.10 -0.10 0.48 0.521 3.0
computations   -0.75  0.31  0.15  0.17 -0.03 -0.22  0.03 -0.01  0.02 -0.21  0.04  0.08  0.02 0.82 0.176 2.0
thoughts        0.58  0.57  0.10 -0.14  0.12 -0.04 -0.13  0.10  0.12 -0.03 -0.10 -0.03  0.00 0.76 0.239 2.6
reasoning      -0.02  0.61  0.35  0.17  0.08 -0.20 -0.07  0.11  0.05  0.02 -0.05  0.01 -0.06 0.59 0.405 2.3
remembering    -0.10  0.47  0.49  0.10 -0.07 -0.12  0.11 -0.04 -0.05  0.06 -0.02 -0.20  0.06 0.57 0.435 2.9
beliefs         0.25  0.59 -0.13  0.19  0.19  0.08  0.10 -0.25 -0.10 -0.07 -0.08  0.01  0.00 0.59 0.408 2.7
hungry          0.99 -0.15  0.01  0.03  0.00 -0.01  0.00  0.00  0.00  0.00  0.00  0.00  0.00 1.00 0.005 1.0
tired           0.85  0.17 -0.04 -0.12 -0.03  0.01  0.09  0.00 -0.06  0.04  0.08  0.16  0.03 0.81 0.187 1.3
pain            0.89  0.01  0.00 -0.15 -0.02  0.10  0.05  0.04  0.00  0.01  0.03  0.00 -0.04 0.83 0.167 1.1
nauseated       0.70  0.38 -0.12 -0.08 -0.12 -0.04  0.24  0.18 -0.06  0.01 -0.01  0.10 -0.05 0.78 0.222 2.2
safe            0.72  0.29  0.04 -0.13  0.01  0.03 -0.05  0.07  0.02  0.08  0.04  0.00  0.07 0.65 0.351 1.5
love            0.56  0.61 -0.14  0.07 -0.01 -0.03  0.08  0.15 -0.21 -0.03  0.02 -0.15 -0.07 0.81 0.190 2.7
recognizing    -0.19  0.57  0.45  0.18 -0.11 -0.06 -0.08  0.14  0.09  0.09 -0.02  0.00  0.01 0.65 0.352 2.9
communicating  -0.05  0.39  0.47  0.19 -0.03 -0.08  0.00 -0.02 -0.01  0.15  0.11 -0.04  0.04 0.45 0.548 2.8
guilt           0.36  0.64 -0.24  0.22  0.01  0.10  0.05  0.01  0.06 -0.04 -0.03 -0.04  0.01 0.66 0.335 2.3
disrespected    0.37  0.63 -0.23  0.21  0.04  0.14  0.18 -0.06  0.03  0.05 -0.13 -0.06  0.09 0.72 0.277 2.8
free_will       0.73  0.35  0.05 -0.23  0.25  0.05 -0.08  0.05 -0.18 -0.14 -0.02  0.02  0.07 0.84 0.159 2.3
choices         0.31  0.41  0.46 -0.05  0.13 -0.12 -0.05 -0.06 -0.01  0.06  0.02  0.04  0.09 0.53 0.468 3.4
self_restraint  0.29  0.58  0.02  0.03  0.14 -0.11  0.06 -0.07 -0.15  0.15 -0.11  0.05  0.02 0.53 0.474 2.2
intentions      0.57  0.37  0.22 -0.20  0.22 -0.10  0.08 -0.05  0.07  0.00  0.04 -0.13  0.03 0.64 0.357 3.2
goal            0.20  0.41  0.43  0.02 -0.04 -0.09  0.13 -0.13 -0.11  0.09  0.12 -0.11  0.05 0.48 0.517 3.7
conscious       0.73  0.36  0.05 -0.19  0.15  0.03 -0.02  0.01  0.09 -0.02 -0.05  0.01 -0.16 0.76 0.239 1.9
self_aware      0.54  0.48  0.06 -0.15  0.18  0.04 -0.06  0.04  0.15  0.02 -0.06  0.09  0.10 0.64 0.362 2.8
desires         0.75  0.39  0.02 -0.28  0.06 -0.01  0.15 -0.10  0.08 -0.04  0.06 -0.06 -0.05 0.84 0.156 2.1
embarrassed     0.35  0.60 -0.28  0.25  0.03  0.10  0.00  0.07  0.21 -0.15  0.06 -0.04  0.08 0.73 0.274 3.3
emo_recog       0.24  0.66  0.07  0.21  0.26  0.09 -0.13  0.02 -0.01  0.09  0.16 -0.01 -0.15 0.69 0.310 2.4
joy             0.62  0.61 -0.15 -0.02 -0.20 -0.07 -0.02 -0.06  0.06 -0.07 -0.03  0.02 -0.08 0.84 0.162 2.5
morality        0.05  0.58  0.14  0.35  0.26  0.04 -0.06 -0.19 -0.07  0.05 -0.08  0.15 -0.11 0.63 0.366 3.0
personality     0.33  0.67  0.09  0.05  0.10  0.01 -0.07  0.11  0.07  0.01  0.12 -0.05 -0.01 0.61 0.386 1.8
pleasure        0.77  0.40 -0.07 -0.12 -0.08 -0.06  0.09 -0.11  0.05  0.05 -0.06 -0.02  0.02 0.81 0.194 1.8
pride           0.40  0.65 -0.24  0.18  0.07  0.06  0.04  0.03 -0.01  0.06  0.12  0.08  0.12 0.72 0.278 2.5

                        MR1  MR2  MR3  MR4  MR5  MR7  MR6  MR9  MR8 MR10 MR12 MR11 MR13
SS loadings           11.73 8.81 3.15 0.97 0.67 0.46 0.41 0.31 0.28 0.25 0.24 0.24 0.17
Proportion Var         0.29 0.22 0.08 0.02 0.02 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.00
Cumulative Var         0.29 0.51 0.59 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.68 0.69 0.69
Proportion Explained   0.42 0.32 0.11 0.04 0.02 0.02 0.01 0.01 0.01 0.01 0.01 0.01 0.01
Cumulative Proportion  0.42 0.74 0.86 0.89 0.92 0.93 0.95 0.96 0.97 0.98 0.99 0.99 1.00

Mean item complexity =  2.4
Test of the hypothesis that 13 factors are sufficient.

The degrees of freedom for the null model are  780  and the objective function was  34.22 with Chi Square of  13170.85
The degrees of freedom for the model are 338  and the objective function was  0.95 

The root mean square of the residuals (RMSR) is  0.01 
The df corrected root mean square of the residuals is  0.02 

The harmonic number of observations is  400 with the empirical chi square  79.31  with prob <  1 
The total number of observations was  400  with MLE Chi Square =  358.44  with prob <  0.21 

Tucker Lewis Index of factoring reliability =  0.996
RMSEA index =  0.018  and the 90 % confidence intervals are  NA 0.023
BIC =  -1666.68
Fit based upon off diagonal values = 1
Measures of factor score adequacy             
                                                MR1  MR2  MR3  MR4  MR5  MR7  MR6  MR9  MR8  MR10  MR12  MR11  MR13
Correlation of scores with factors             1.00 0.99 0.94 0.89 0.85 0.77 0.81 0.72 0.73  0.69  0.65  0.68  0.61
Multiple R square of scores with factors       1.00 0.97 0.89 0.80 0.73 0.59 0.65 0.52 0.53  0.48  0.42  0.46  0.37
Minimum correlation of possible factor scores  0.99 0.95 0.78 0.59 0.45 0.18 0.31 0.05 0.06 -0.04 -0.16 -0.09 -0.25
[1] 3
[1] 3

Step 2: Run EFA with varimax rotation

Factor Analysis using method =  minres
Call: fa(r = d3_all, nfactors = nfactors_d3_all, rotate = chosenRotType, 
    fm = "minres", cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
                 MR1   MR2   MR3   h2   u2 com
happy           0.52  0.68  0.17 0.77 0.23 2.0
depressed       0.35  0.75  0.06 0.69 0.31 1.4
fear            0.78  0.37  0.10 0.75 0.25 1.5
angry           0.54  0.62  0.11 0.69 0.31 2.0
calm            0.59  0.49  0.25 0.66 0.34 2.3
sounds          0.20 -0.03  0.64 0.45 0.55 1.2
seeing          0.37 -0.04  0.55 0.43 0.57 1.8
temperature     0.40 -0.06  0.58 0.50 0.50 1.8
odors           0.54  0.04  0.41 0.47 0.53 1.9
depth           0.20  0.11  0.58 0.38 0.62 1.3
computations   -0.80  0.08  0.27 0.72 0.28 1.3
thoughts        0.50  0.55  0.33 0.67 0.33 2.6
reasoning      -0.13  0.41  0.59 0.54 0.46 1.9
remembering    -0.15  0.19  0.65 0.49 0.51 1.3
beliefs         0.10  0.64  0.15 0.44 0.56 1.2
hungry          0.93  0.10 -0.05 0.87 0.13 1.0
tired           0.82  0.31  0.04 0.78 0.22 1.3
pain            0.90  0.16  0.01 0.84 0.16 1.1
nauseated       0.64  0.50  0.06 0.66 0.34 1.9
safe            0.69  0.35  0.16 0.63 0.37 1.6
love            0.42  0.70  0.15 0.70 0.30 1.8
recognizing    -0.27  0.29  0.66 0.59 0.41 1.7
communicating  -0.11  0.16  0.60 0.40 0.60 1.2
guilt           0.19  0.76  0.07 0.63 0.37 1.1
disrespected    0.21  0.75  0.07 0.61 0.39 1.2
free_will       0.69  0.40  0.18 0.66 0.34 1.8
choices         0.27  0.21  0.59 0.47 0.53 1.7
self_restraint  0.19  0.56  0.27 0.43 0.57 1.7
intentions      0.54  0.33  0.34 0.52 0.48 2.4
goal            0.16  0.21  0.56 0.39 0.61 1.5
conscious       0.69  0.41  0.20 0.68 0.32 1.8
self_aware      0.49  0.48  0.26 0.54 0.46 2.5
desires         0.73  0.44  0.18 0.75 0.25 1.8
embarrassed     0.18  0.75  0.02 0.60 0.40 1.1
emo_recog       0.09  0.62  0.35 0.51 0.49 1.6
joy             0.50  0.70  0.14 0.76 0.24 1.9
morality       -0.10  0.51  0.37 0.41 0.59 1.9
personality     0.21  0.62  0.37 0.57 0.43 1.9
pleasure        0.70  0.51  0.11 0.76 0.24 1.9
pride           0.24  0.77  0.08 0.66 0.34 1.2

                       MR1  MR2  MR3
SS loadings           9.87 9.20 4.98
Proportion Var        0.25 0.23 0.12
Cumulative Var        0.25 0.48 0.60
Proportion Explained  0.41 0.38 0.21
Cumulative Proportion 0.41 0.79 1.00

Mean item complexity =  1.7
Test of the hypothesis that 3 factors are sufficient.

The degrees of freedom for the null model are  780  and the objective function was  34.22 with Chi Square of  13170.85
The degrees of freedom for the model are 663  and the objective function was  3.58 

The root mean square of the residuals (RMSR) is  0.03 
The df corrected root mean square of the residuals is  0.03 

The harmonic number of observations is  400 with the empirical chi square  526.02  with prob <  1 
The total number of observations was  400  with MLE Chi Square =  1371.31  with prob <  1.4e-51 

Tucker Lewis Index of factoring reliability =  0.932
RMSEA index =  0.054  and the 90 % confidence intervals are  0.048 0.056
BIC =  -2601.03
Fit based upon off diagonal values = 1
Measures of factor score adequacy             
                                                MR1  MR2  MR3
Correlation of scores with factors             0.98 0.96 0.94
Multiple R square of scores with factors       0.96 0.93 0.88
Minimum correlation of possible factor scores  0.92 0.86 0.77

back to TOC

Factor loadings table

Study 4

Design: 21 conditions, between-subjects Date conducted: 2016-01-14

Demographics

Joining, by = c("condition", "min_age", "max_age", "median_age", "mean_age", "sd_age")
joining character vector and factor, coercing into character vector

back to TOC

Exploratory factor analysis

Step 1: Run maximal EFA (without and with rotation)

Parallel analysis suggests that the number of factors =  4  and the number of components =  3 

Factor Analysis using method =  minres
Call: fa(r = d4_all, nfactors = 13, rotate = "none", fm = "minres", 
    cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
                MR1   MR2   MR3   MR5   MR4   MR6   MR7  MR10   MR8   MR9  MR11  MR13  MR12   h2    u2 com
happy          0.90 -0.04 -0.19 -0.06 -0.21 -0.05  0.01 -0.01 -0.01  0.10  0.00  0.04 -0.07 0.91 0.085 1.3
depressed      0.81  0.20 -0.08 -0.06 -0.07  0.23 -0.15  0.03  0.00 -0.12 -0.03  0.05  0.14 0.83 0.167 1.6
fear           0.86 -0.34 -0.11  0.05  0.12  0.00 -0.04  0.01 -0.06  0.03 -0.01  0.00  0.05 0.88 0.118 1.4
angry          0.87 -0.04 -0.09 -0.06 -0.09  0.09 -0.05  0.10  0.08 -0.05 -0.02 -0.11 -0.06 0.82 0.178 1.2
calm           0.87 -0.18 -0.10  0.06 -0.02 -0.06 -0.04 -0.01 -0.08  0.08  0.05  0.09  0.02 0.82 0.178 1.2
sounds         0.69 -0.33  0.40 -0.22  0.12 -0.06  0.10  0.00  0.03  0.06  0.06  0.01  0.09 0.84 0.159 2.6
seeing         0.76 -0.33  0.28 -0.13  0.11  0.01  0.02  0.04  0.08  0.04  0.06 -0.08 -0.05 0.82 0.178 1.9
temperature    0.63 -0.32  0.39 -0.14  0.16  0.00  0.03 -0.01  0.00  0.04  0.08  0.05  0.06 0.71 0.290 2.6
odors          0.79 -0.25  0.19 -0.07  0.14  0.11  0.05 -0.04  0.12 -0.09  0.06 -0.06  0.06 0.79 0.209 1.6
depth          0.67 -0.05  0.43  0.09  0.10  0.00 -0.05  0.11  0.12  0.03  0.08  0.17 -0.02 0.72 0.277 2.2
computations   0.18  0.53  0.51 -0.13 -0.03  0.02  0.07  0.04  0.03  0.12  0.06  0.13 -0.04 0.64 0.363 2.7
thoughts       0.85  0.01 -0.02  0.11 -0.06 -0.09  0.15 -0.12  0.04 -0.21 -0.08  0.04  0.06 0.84 0.158 1.4
reasoning      0.70  0.32  0.33  0.18 -0.05  0.01  0.09 -0.09  0.06 -0.05 -0.01 -0.02 -0.11 0.76 0.235 2.3
remembering    0.72  0.02  0.47 -0.06 -0.10  0.06 -0.05  0.02  0.09 -0.03 -0.09  0.06  0.03 0.78 0.219 1.9
beliefs        0.66  0.55 -0.01  0.16  0.05 -0.05  0.18 -0.02 -0.03 -0.02  0.11  0.06  0.00 0.81 0.186 2.4
hungry         0.80 -0.41 -0.15  0.06  0.21  0.00  0.04  0.01 -0.01  0.03 -0.03 -0.02 -0.02 0.88 0.120 1.8
tired          0.87 -0.34 -0.13 -0.04  0.06  0.05 -0.01  0.00 -0.04 -0.01 -0.01  0.01 -0.10 0.92 0.084 1.4
pain           0.83 -0.39 -0.17 -0.03  0.19  0.07  0.08 -0.01 -0.04 -0.03 -0.04  0.01  0.00 0.93 0.067 1.7
nauseated      0.83 -0.09 -0.14 -0.04 -0.04  0.11 -0.10 -0.02  0.09 -0.01  0.06  0.07 -0.01 0.76 0.239 1.2
safe           0.86 -0.19 -0.07  0.07  0.00 -0.16 -0.10 -0.02 -0.09  0.11  0.00  0.04  0.13 0.86 0.139 1.3
love           0.86  0.08 -0.18 -0.04 -0.20 -0.01  0.09  0.07 -0.03  0.00  0.02 -0.01 -0.02 0.83 0.172 1.3
recognizing    0.78 -0.05  0.29 -0.28 -0.18  0.03  0.06 -0.01  0.01  0.02 -0.02  0.02 -0.03 0.81 0.190 1.7
communicating  0.72 -0.11  0.47 -0.13 -0.12 -0.11 -0.06  0.00 -0.23 -0.10 -0.03 -0.06 -0.04 0.87 0.125 2.3
guilt          0.74  0.51 -0.08 -0.05  0.05  0.08  0.01 -0.04  0.02  0.01 -0.01 -0.01  0.03 0.83 0.167 1.9
disrespected   0.73  0.45 -0.02  0.02  0.09  0.12 -0.01  0.06 -0.13  0.03  0.08 -0.11  0.02 0.80 0.205 2.0
free_will      0.81 -0.08  0.04  0.31  0.03 -0.06  0.02  0.14  0.06  0.01 -0.05 -0.04  0.07 0.81 0.195 1.4
choices        0.76 -0.06  0.39  0.15  0.02 -0.03 -0.08 -0.01  0.09  0.11 -0.15 -0.10  0.02 0.82 0.181 1.9
self_restraint 0.73  0.35  0.20  0.17  0.01  0.26 -0.08 -0.13 -0.11  0.09 -0.04  0.06 -0.04 0.84 0.156 2.3
intentions     0.80  0.04  0.13  0.22  0.09 -0.13 -0.13  0.03  0.09  0.00  0.03 -0.01 -0.01 0.76 0.242 1.4
goal           0.64  0.07  0.38  0.20  0.06 -0.10 -0.13 -0.16 -0.02 -0.11 -0.04 -0.01 -0.08 0.68 0.320 2.4
conscious      0.82 -0.14  0.00  0.13  0.02 -0.08  0.07 -0.09 -0.04 -0.04  0.05  0.01  0.00 0.73 0.270 1.2
self_aware     0.75  0.19  0.11  0.26  0.02 -0.01  0.15  0.12  0.03  0.07 -0.13  0.04 -0.08 0.75 0.248 1.7
desires        0.88 -0.08 -0.05  0.13 -0.05 -0.05 -0.13 -0.03  0.03 -0.10  0.19 -0.03 -0.03 0.87 0.132 1.3
embarrassed    0.72  0.59 -0.14 -0.15  0.20 -0.09 -0.04 -0.01  0.02 -0.01 -0.03  0.00 -0.01 0.96 0.043 2.4
emo_recog      0.76  0.35  0.08 -0.01 -0.06  0.09  0.04  0.12 -0.07  0.00 -0.01 -0.03  0.02 0.74 0.262 1.6
joy            0.90 -0.01 -0.16 -0.04 -0.25 -0.02  0.02 -0.10  0.07  0.07 -0.01 -0.06  0.05 0.93 0.069 1.3
morality       0.68  0.50  0.11  0.11  0.01  0.10  0.16 -0.04 -0.07  0.07  0.10 -0.09  0.04 0.80 0.199 2.3
personality    0.89  0.02 -0.04 -0.04 -0.20 -0.02  0.04  0.11 -0.02 -0.12 -0.02  0.06  0.03 0.87 0.126 1.2
pleasure       0.91 -0.19 -0.10  0.00 -0.05  0.01 -0.04  0.00  0.09  0.00  0.01  0.03 -0.05 0.89 0.113 1.2
pride          0.81  0.33 -0.06  0.11 -0.06 -0.01  0.00  0.17 -0.05  0.00  0.04 -0.03  0.00 0.81 0.192 1.5

                        MR1  MR2  MR3  MR5  MR4  MR6  MR7 MR10  MR8  MR9 MR11 MR13 MR12
SS loadings           24.34 3.28 2.17 0.72 0.52 0.32 0.28 0.22 0.22 0.22 0.17 0.15 0.13
Proportion Var         0.61 0.08 0.05 0.02 0.01 0.01 0.01 0.01 0.01 0.01 0.00 0.00 0.00
Cumulative Var         0.61 0.69 0.74 0.76 0.78 0.78 0.79 0.80 0.80 0.81 0.81 0.82 0.82
Proportion Explained   0.74 0.10 0.07 0.02 0.02 0.01 0.01 0.01 0.01 0.01 0.01 0.00 0.00
Cumulative Proportion  0.74 0.84 0.91 0.93 0.95 0.96 0.97 0.97 0.98 0.99 0.99 1.00 1.00

Mean item complexity =  1.7
Test of the hypothesis that 13 factors are sufficient.

The degrees of freedom for the null model are  780  and the objective function was  52.07 with Chi Square of  21651.8
The degrees of freedom for the model are 338  and the objective function was  1.2 

The root mean square of the residuals (RMSR) is  0.01 
The df corrected root mean square of the residuals is  0.01 

The harmonic number of observations is  431 with the empirical chi square  39.58  with prob <  1 
The total number of observations was  431  with MLE Chi Square =  486.84  with prob <  1.9e-07 

Tucker Lewis Index of factoring reliability =  0.983
RMSEA index =  0.035  and the 90 % confidence intervals are  0.025 0.038
BIC =  -1563.5
Fit based upon off diagonal values = 1
Measures of factor score adequacy             
                                                MR1  MR2  MR3  MR5  MR4  MR6  MR7 MR10  MR8  MR9  MR11  MR13  MR12
Correlation of scores with factors             1.00 0.98 0.96 0.90 0.91 0.82 0.79 0.74 0.76 0.76  0.70  0.66  0.68
Multiple R square of scores with factors       0.99 0.96 0.92 0.80 0.83 0.67 0.62 0.54 0.58 0.58  0.49  0.44  0.46
Minimum correlation of possible factor scores  0.99 0.93 0.84 0.61 0.66 0.35 0.23 0.09 0.16 0.15 -0.01 -0.12 -0.08
Factor Analysis using method =  minres
Call: fa(r = d4_all, nfactors = 13, rotate = "none", fm = "minres", 
    cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
                MR1   MR2   MR3   MR5   MR4   MR6   MR7  MR10   MR8   MR9  MR11  MR13  MR12   h2    u2 com
happy          0.90 -0.04 -0.19 -0.06 -0.21 -0.05  0.01 -0.01 -0.01  0.10  0.00  0.04 -0.07 0.91 0.085 1.3
depressed      0.81  0.20 -0.08 -0.06 -0.07  0.23 -0.15  0.03  0.00 -0.12 -0.03  0.05  0.14 0.83 0.167 1.6
fear           0.86 -0.34 -0.11  0.05  0.12  0.00 -0.04  0.01 -0.06  0.03 -0.01  0.00  0.05 0.88 0.118 1.4
angry          0.87 -0.04 -0.09 -0.06 -0.09  0.09 -0.05  0.10  0.08 -0.05 -0.02 -0.11 -0.06 0.82 0.178 1.2
calm           0.87 -0.18 -0.10  0.06 -0.02 -0.06 -0.04 -0.01 -0.08  0.08  0.05  0.09  0.02 0.82 0.178 1.2
sounds         0.69 -0.33  0.40 -0.22  0.12 -0.06  0.10  0.00  0.03  0.06  0.06  0.01  0.09 0.84 0.159 2.6
seeing         0.76 -0.33  0.28 -0.13  0.11  0.01  0.02  0.04  0.08  0.04  0.06 -0.08 -0.05 0.82 0.178 1.9
temperature    0.63 -0.32  0.39 -0.14  0.16  0.00  0.03 -0.01  0.00  0.04  0.08  0.05  0.06 0.71 0.290 2.6
odors          0.79 -0.25  0.19 -0.07  0.14  0.11  0.05 -0.04  0.12 -0.09  0.06 -0.06  0.06 0.79 0.209 1.6
depth          0.67 -0.05  0.43  0.09  0.10  0.00 -0.05  0.11  0.12  0.03  0.08  0.17 -0.02 0.72 0.277 2.2
computations   0.18  0.53  0.51 -0.13 -0.03  0.02  0.07  0.04  0.03  0.12  0.06  0.13 -0.04 0.64 0.363 2.7
thoughts       0.85  0.01 -0.02  0.11 -0.06 -0.09  0.15 -0.12  0.04 -0.21 -0.08  0.04  0.06 0.84 0.158 1.4
reasoning      0.70  0.32  0.33  0.18 -0.05  0.01  0.09 -0.09  0.06 -0.05 -0.01 -0.02 -0.11 0.76 0.235 2.3
remembering    0.72  0.02  0.47 -0.06 -0.10  0.06 -0.05  0.02  0.09 -0.03 -0.09  0.06  0.03 0.78 0.219 1.9
beliefs        0.66  0.55 -0.01  0.16  0.05 -0.05  0.18 -0.02 -0.03 -0.02  0.11  0.06  0.00 0.81 0.186 2.4
hungry         0.80 -0.41 -0.15  0.06  0.21  0.00  0.04  0.01 -0.01  0.03 -0.03 -0.02 -0.02 0.88 0.120 1.8
tired          0.87 -0.34 -0.13 -0.04  0.06  0.05 -0.01  0.00 -0.04 -0.01 -0.01  0.01 -0.10 0.92 0.084 1.4
pain           0.83 -0.39 -0.17 -0.03  0.19  0.07  0.08 -0.01 -0.04 -0.03 -0.04  0.01  0.00 0.93 0.067 1.7
nauseated      0.83 -0.09 -0.14 -0.04 -0.04  0.11 -0.10 -0.02  0.09 -0.01  0.06  0.07 -0.01 0.76 0.239 1.2
safe           0.86 -0.19 -0.07  0.07  0.00 -0.16 -0.10 -0.02 -0.09  0.11  0.00  0.04  0.13 0.86 0.139 1.3
love           0.86  0.08 -0.18 -0.04 -0.20 -0.01  0.09  0.07 -0.03  0.00  0.02 -0.01 -0.02 0.83 0.172 1.3
recognizing    0.78 -0.05  0.29 -0.28 -0.18  0.03  0.06 -0.01  0.01  0.02 -0.02  0.02 -0.03 0.81 0.190 1.7
communicating  0.72 -0.11  0.47 -0.13 -0.12 -0.11 -0.06  0.00 -0.23 -0.10 -0.03 -0.06 -0.04 0.87 0.125 2.3
guilt          0.74  0.51 -0.08 -0.05  0.05  0.08  0.01 -0.04  0.02  0.01 -0.01 -0.01  0.03 0.83 0.167 1.9
disrespected   0.73  0.45 -0.02  0.02  0.09  0.12 -0.01  0.06 -0.13  0.03  0.08 -0.11  0.02 0.80 0.205 2.0
free_will      0.81 -0.08  0.04  0.31  0.03 -0.06  0.02  0.14  0.06  0.01 -0.05 -0.04  0.07 0.81 0.195 1.4
choices        0.76 -0.06  0.39  0.15  0.02 -0.03 -0.08 -0.01  0.09  0.11 -0.15 -0.10  0.02 0.82 0.181 1.9
self_restraint 0.73  0.35  0.20  0.17  0.01  0.26 -0.08 -0.13 -0.11  0.09 -0.04  0.06 -0.04 0.84 0.156 2.3
intentions     0.80  0.04  0.13  0.22  0.09 -0.13 -0.13  0.03  0.09  0.00  0.03 -0.01 -0.01 0.76 0.242 1.4
goal           0.64  0.07  0.38  0.20  0.06 -0.10 -0.13 -0.16 -0.02 -0.11 -0.04 -0.01 -0.08 0.68 0.320 2.4
conscious      0.82 -0.14  0.00  0.13  0.02 -0.08  0.07 -0.09 -0.04 -0.04  0.05  0.01  0.00 0.73 0.270 1.2
self_aware     0.75  0.19  0.11  0.26  0.02 -0.01  0.15  0.12  0.03  0.07 -0.13  0.04 -0.08 0.75 0.248 1.7
desires        0.88 -0.08 -0.05  0.13 -0.05 -0.05 -0.13 -0.03  0.03 -0.10  0.19 -0.03 -0.03 0.87 0.132 1.3
embarrassed    0.72  0.59 -0.14 -0.15  0.20 -0.09 -0.04 -0.01  0.02 -0.01 -0.03  0.00 -0.01 0.96 0.043 2.4
emo_recog      0.76  0.35  0.08 -0.01 -0.06  0.09  0.04  0.12 -0.07  0.00 -0.01 -0.03  0.02 0.74 0.262 1.6
joy            0.90 -0.01 -0.16 -0.04 -0.25 -0.02  0.02 -0.10  0.07  0.07 -0.01 -0.06  0.05 0.93 0.069 1.3
morality       0.68  0.50  0.11  0.11  0.01  0.10  0.16 -0.04 -0.07  0.07  0.10 -0.09  0.04 0.80 0.199 2.3
personality    0.89  0.02 -0.04 -0.04 -0.20 -0.02  0.04  0.11 -0.02 -0.12 -0.02  0.06  0.03 0.87 0.126 1.2
pleasure       0.91 -0.19 -0.10  0.00 -0.05  0.01 -0.04  0.00  0.09  0.00  0.01  0.03 -0.05 0.89 0.113 1.2
pride          0.81  0.33 -0.06  0.11 -0.06 -0.01  0.00  0.17 -0.05  0.00  0.04 -0.03  0.00 0.81 0.192 1.5

                        MR1  MR2  MR3  MR5  MR4  MR6  MR7 MR10  MR8  MR9 MR11 MR13 MR12
SS loadings           24.34 3.28 2.17 0.72 0.52 0.32 0.28 0.22 0.22 0.22 0.17 0.15 0.13
Proportion Var         0.61 0.08 0.05 0.02 0.01 0.01 0.01 0.01 0.01 0.01 0.00 0.00 0.00
Cumulative Var         0.61 0.69 0.74 0.76 0.78 0.78 0.79 0.80 0.80 0.81 0.81 0.82 0.82
Proportion Explained   0.74 0.10 0.07 0.02 0.02 0.01 0.01 0.01 0.01 0.01 0.01 0.00 0.00
Cumulative Proportion  0.74 0.84 0.91 0.93 0.95 0.96 0.97 0.97 0.98 0.99 0.99 1.00 1.00

Mean item complexity =  1.7
Test of the hypothesis that 13 factors are sufficient.

The degrees of freedom for the null model are  780  and the objective function was  52.07 with Chi Square of  21651.8
The degrees of freedom for the model are 338  and the objective function was  1.2 

The root mean square of the residuals (RMSR) is  0.01 
The df corrected root mean square of the residuals is  0.01 

The harmonic number of observations is  431 with the empirical chi square  39.58  with prob <  1 
The total number of observations was  431  with MLE Chi Square =  486.84  with prob <  1.9e-07 

Tucker Lewis Index of factoring reliability =  0.983
RMSEA index =  0.035  and the 90 % confidence intervals are  0.025 0.038
BIC =  -1563.5
Fit based upon off diagonal values = 1
Measures of factor score adequacy             
                                                MR1  MR2  MR3  MR5  MR4  MR6  MR7 MR10  MR8  MR9  MR11  MR13  MR12
Correlation of scores with factors             1.00 0.98 0.96 0.90 0.91 0.82 0.79 0.74 0.76 0.76  0.70  0.66  0.68
Multiple R square of scores with factors       0.99 0.96 0.92 0.80 0.83 0.67 0.62 0.54 0.58 0.58  0.49  0.44  0.46
Minimum correlation of possible factor scores  0.99 0.93 0.84 0.61 0.66 0.35 0.23 0.09 0.16 0.15 -0.01 -0.12 -0.08
[1] 3
[1] 3

Step 2: Run EFA with varimax rotation

Factor Analysis using method =  minres
Call: fa(r = d4_all, nfactors = 4, rotate = chosenRotType, fm = "minres", 
    cor = chosenCorType)
Standardized loadings (pattern matrix) based upon correlation matrix
                 MR1  MR2  MR3   MR4   h2   u2 com
happy           0.73 0.47 0.22  0.28 0.89 0.11 2.3
depressed       0.50 0.61 0.23  0.17 0.71 0.29 2.4
fear            0.83 0.22 0.36 -0.07 0.88 0.12 1.5
angry           0.67 0.45 0.31  0.19 0.78 0.22 2.4
calm            0.75 0.36 0.31  0.04 0.79 0.21 1.8
sounds          0.45 0.08 0.75  0.08 0.77 0.23 1.7
seeing          0.56 0.14 0.67  0.04 0.79 0.21 2.0
temperature     0.41 0.07 0.71 -0.01 0.68 0.32 1.6
odors           0.58 0.23 0.57  0.00 0.73 0.27 2.3
depth           0.29 0.34 0.67 -0.07 0.66 0.34 1.9
computations   -0.41 0.49 0.40  0.15 0.59 0.41 3.1
thoughts        0.60 0.50 0.33  0.06 0.72 0.28 2.6
reasoning       0.17 0.68 0.47  0.00 0.71 0.29 1.9
remembering     0.25 0.40 0.71  0.17 0.76 0.24 2.0
beliefs         0.19 0.84 0.12 -0.05 0.76 0.24 1.1
hungry          0.85 0.13 0.32 -0.14 0.87 0.13 1.4
tired           0.85 0.21 0.35  0.05 0.90 0.10 1.5
pain            0.87 0.16 0.32 -0.06 0.89 0.11 1.3
nauseated       0.69 0.39 0.26  0.14 0.72 0.28 2.0
safe            0.74 0.34 0.35  0.01 0.78 0.22 1.9
love            0.64 0.55 0.17  0.27 0.82 0.18 2.5
recognizing     0.41 0.35 0.60  0.38 0.81 0.19 3.3
communicating   0.34 0.29 0.71  0.19 0.74 0.26 2.0
guilt           0.30 0.82 0.13  0.10 0.79 0.21 1.4
disrespected    0.29 0.78 0.18  0.02 0.73 0.27 1.4
free_will       0.60 0.45 0.37 -0.15 0.72 0.28 2.8
choices         0.38 0.39 0.66 -0.06 0.74 0.26 2.3
self_restraint  0.24 0.72 0.37 -0.02 0.71 0.29 1.8
intentions      0.49 0.51 0.43 -0.14 0.70 0.30 3.1
goal            0.23 0.44 0.57 -0.13 0.58 0.42 2.4
conscious       0.65 0.38 0.37 -0.04 0.70 0.30 2.3
self_aware      0.39 0.62 0.34 -0.10 0.66 0.34 2.4
desires         0.68 0.45 0.33  0.03 0.78 0.22 2.3
embarrassed     0.28 0.82 0.09  0.07 0.76 0.24 1.3
emo_recog       0.31 0.71 0.29  0.14 0.71 0.29 1.8
joy             0.70 0.50 0.24  0.27 0.88 0.12 2.5
morality        0.17 0.81 0.24  0.01 0.75 0.25 1.3
personality     0.63 0.52 0.33  0.25 0.83 0.17 2.9
pleasure        0.78 0.36 0.35  0.12 0.87 0.13 1.9
pride           0.43 0.74 0.19  0.07 0.78 0.22 1.8

                        MR1   MR2  MR3  MR4
SS loadings           12.14 10.24 7.24 0.79
Proportion Var         0.30  0.26 0.18 0.02
Cumulative Var         0.30  0.56 0.74 0.76
Proportion Explained   0.40  0.34 0.24 0.03
Cumulative Proportion  0.40  0.74 0.97 1.00

Mean item complexity =  2
Test of the hypothesis that 4 factors are sufficient.

The degrees of freedom for the null model are  780  and the objective function was  52.07 with Chi Square of  21651.8
The degrees of freedom for the model are 626  and the objective function was  4.01 

The root mean square of the residuals (RMSR) is  0.02 
The df corrected root mean square of the residuals is  0.02 

The harmonic number of observations is  431 with the empirical chi square  237.73  with prob <  1 
The total number of observations was  431  with MLE Chi Square =  1656.76  with prob <  4.1e-94 

Tucker Lewis Index of factoring reliability =  0.938
RMSEA index =  0.064  and the 90 % confidence intervals are  0.058 0.065
BIC =  -2140.62
Fit based upon off diagonal values = 1
Measures of factor score adequacy             
                                                MR1  MR2  MR3  MR4
Correlation of scores with factors             0.98 0.97 0.96 0.88
Multiple R square of scores with factors       0.96 0.95 0.91 0.77
Minimum correlation of possible factor scores  0.92 0.90 0.83 0.54

back to TOC

Factor loadings table

Big factor loadings table for all studies (Studies 1-4)

Joining, by = "mc"
Joining, by = "mc"
Joining, by = "mc"

Figures

Joining, by = "condition"
joining character vector and factor, coercing into character vectorJoining, by = "condition"
joining character vector and factor, coercing into character vectorJoining, by = "condition"
joining character vector and factor, coercing into character vectorJoining, by = "condition"
joining character vector and factor, coercing into character vector
Joining, by = c("condition", "mc", "ci_lower", "mean", "ci_upper", "n", "study")
Joining, by = c("condition", "mc", "ci_lower", "mean", "ci_upper", "n", "study")
Joining, by = c("condition", "mc", "ci_lower", "mean", "ci_upper", "n", "study")
Joining, by = "mc"
Joining, by = "mc"
Joining, by = "mc"
Joining, by = "mc"
Joining, by = "mc"

Figure 1

Mean ratings of 40 mental capacities for a subset of the 21 entities included in Study 4. (See Fig. S5 for mean ratings for the full set of entities.) Participants responded on a scale from 0 (Not at all capable) to 6 (Highly capable). Error bars are nonparametric bootstrapped 95% confidence intervals. Mental capacities are grouped according to their dominant factor loading in Study 1. Doing computations was the only item to load negatively on its dominant factor in any study (and did so in Studies 1-3); in Study 4, it loaded positively on its dominant factor (Factor 2, “heart”).

Figure S1 (supporting materials)

Factor loadings for the 40 mental capacities on the three rotated factors in Study 1. Items are colored by their dominant factor loading: Items that loaded most strongly on the body factor (physiological states and will) are in red; items that loaded most strongly on the heart factor (social-emotional experiences and morality) are in blue; and items that loaded most strongly on the mind factor (perceptual-cognitive abilities and goal pursuit) are in green.

Joining, by = "item"

Figure S2 (supporting materials)

Mean ratings of 40 mental capacities for the 2 entities included in Studies 1-3. Participants responded on a scale from 0 (Not at all capable) to 6 (Highly capable). Error bars are nonparametric bootstrapped 95% confidence intervals. Mental capacities are grouped according to their dominant factor loading in Study 1.

Figure S3 (supporting materials)

Mean ratings of 40 mental capacities for all 21 entities included in Study 4. Participants responded on a scale from 0 (Not at all capable) to 6 (Highly capable). Error bars are nonparametric bootstrapped 95% confidence intervals. Mental capacities are grouped according to their dominant factor loading in Study 4.

Figure S7 (supporting materials)

Mean ratings of 40 mental capacities for all of the entities included in Studies 1-4. Participants responded on a scale from 0 (Not at all capable) to 6 (Highly capable). Error bars are nonparametric bootstrapped 95% confidence intervals. Mental capacities are grouped according to their dominant factor loading in Study 1.

LS0tCnRpdGxlOiAnQm9keSwgSGVhcnQsICYgTWluZCAoV2Vpc21hbiwgRHdlY2ssICYgTWFya21hbiwgc3VibWl0dGVkKScKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0aGVtZTogZmxhdGx5CiAgICB0b2M6IHllcwogIHBkZl9kb2N1bWVudDoKICAgIHRvYzogeWVzCi0tLQoKYGBge3IgZ2xvYmFsX29wdGlvbnMsIGluY2x1ZGUgPSBGQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgd2FybmluZyA9IEZBTFNFLCBtZXNzYWdlID0gRkFMU0UpCmBgYAoKIyBTZXR1cAoKYGBge3Igd29ya3NwYWNlIHNldHVwfQojIGxvYWQgbGlicmFyaWVzCmxpYnJhcnkodGlkeXZlcnNlKQpsaWJyYXJ5KHBzeWNoKQpsaWJyYXJ5KGxhbmdjb2cpICMgc291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vbGFuZ2NvZy9sYW5nY29nCmxpYnJhcnkoc2NhdHRlcnBsb3QzZCkKbGlicmFyeShsYXR0aWNlKQpsaWJyYXJ5KGRpcmVjdGxhYmVscykKbGlicmFyeShwbG90bHkpCmxpYnJhcnkoUkNvbG9yQnJld2VyKQoKIyBjbGVhciB3b3Jrc3BhY2UKcm0obGlzdCA9IGxzKGFsbCA9IFQpKQpncmFwaGljcy5vZmYoKQpgYGAKCmBgYHtyIGZ1bmN0aW9uc30KIyBtYWtlIG5hLnJtID0gVCB2ZXJzaW9ucyBvZiBzdW1tYXJ5IGZ1bmN0aW9ucwptZWFuX25hIDwtIGZ1bmN0aW9uKHgpIHttZWFuKHgsIG5hLnJtID0gVCl9CmNpX2xvd2VyX25hIDwtIGZ1bmN0aW9uKHgpIHtxdWFudGlsZSh4LCAwLjAyNSwgbmEucm0gPSBUKX0KY2lfdXBwZXJfbmEgPC0gZnVuY3Rpb24oeCkge3F1YW50aWxlKHgsIDAuOTc1LCBuYS5ybSA9IFQpfQoKIyBtYWtlIHJvdW5kaW5nIGZ1bmN0aW9uCnJvdW5kMiA8LSBmdW5jdGlvbih4KSB7Zm9ybWF0KHJvdW5kKHgsIDIpLCBuc21hbGwgPSAyKX0KCiMgbWFrZSBjbGVhbnVwIGZ1bmN0aW9uCmNsZWFudXAgPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSkgewogIGlmKGRhdGFzb3VyY2UgJWluJSBjKCJzdHVkeSAxIiwgInN0dWR5IDIiKSkgewogICAgCiAgICAjIHNldCB0YXJnZXQgZGF0YXNldAogICAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMSIpe2QgPC0gZF9yYXdfc3R1ZHkxfQogICAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMiIpe2QgPC0gZF9yYXdfc3R1ZHkyfQogICAgCiAgICAjIGVuYWN0IGV4Y2x1c2lvbmFyeSBjcml0ZXJpYQogICAgZF9jbGVhbl8xIDwtIGQgJT4lCiAgICAgIG11dGF0ZShmaW5pc2hlZF9tb2QgPSBpZmVsc2UoaXMubmEoQ0FUQ0gpLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShmaW5pc2hlZCA9PSAxLCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjUpKSkgJT4lCiAgICAgIGZpbHRlcihDQVRDSCA9PSAxLCAjIGV4Y2x1ZGUgUHMgd2hvIGZhaWwgY2F0Y2ggdHJpYWxzIAogICAgICAgICAgICAgZmluaXNoZWRfbW9kICE9IDApICU+JSAjIGV4Y2x1ZGUgUHMgd2hvIGRpZCBub3QgY29tcGxldGUgdGFzawogICAgICBtdXRhdGUoeW9iX2NvcnJlY3QgPSBhcy5udW1lcmljKAogICAgICAgIGlmZWxzZShhcy5udW1lcmljKGFzLmNoYXJhY3Rlcih5b2IpKSA+IDE5MDAgJiAKICAgICAgICAgICAgICAgICBhcy5udW1lcmljKGFzLmNoYXJhY3Rlcih5b2IpKSA8IDIwMDAsIAogICAgICAgICAgICAgICBhcy5udW1lcmljKGFzLmNoYXJhY3Rlcih5b2IpKSwgTkEpKSwgIyBjb3JyZWN0IGZvcm1hdHRpbmcgaW4geW9iCiAgICAgICAgYWdlX2FwcHJveCA9IDIwMTYgLSB5b2JfY29ycmVjdCkgJT4lICMgY2FsY3VsYXRlIGFwcHJveGltYXRlIGFnZQogICAgICBtdXRhdGUoZ2VuZGVyID0gZmFjdG9yKGdlbmRlciwgbGV2ZWxzID0gYygxLCAyLCAwKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygibSIsICJmIiwgIm90aGVyIikpKSAlPiUKICAgICAgZmlsdGVyKGFnZV9hcHByb3ggPj0gMTgpICMgZXhjbHVkZSBQcyB3aG8gYXJlIHlvdW5nZXIgdGhhbiAxOCB5ZWFycwogICAgCiAgICAjIHJlY29kZSBiYWNrZ3JvdW5kIGFuZCBkZW1vZ3JhcGhpYyB2YXJpYWJsZXMKICAgIGRfY2xlYW4gPC0gZF9jbGVhbl8xICU+JQogICAgICBtdXRhdGUoICMgZGVhbCB3aXRoIHN0dWR5IG51bWJlcgogICAgICAgIHN0dWR5ID0gZmFjdG9yKHN0dWR5KSkgJT4lCiAgICAgIG11dGF0ZSggIyBkZWFsIHdpdGggc3R1ZHkgZHVyYXRpb24KICAgICAgICBkdXJhdGlvbiA9IGFzLm51bWVyaWMoZGlmZnRpbWUoc3RycHRpbWUoZW5kX3RpbWUsICIlSTolTTolUyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJwdGltZShzdGFydF90aW1lLCAiJUk6JU06JVMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHMgPSAibWlucyIpKSkgJT4lCiAgICAgIG11dGF0ZSggIyBkZWFsIHdpdGggcmFjZQogICAgICAgIHJhY2VfYXNpYW5fZWFzdCA9IAogICAgICAgICAgZmFjdG9yKGlmZWxzZShpcy5uYShyYWNlX2FzaWFuX2Vhc3QpLCAiIiwgImFzaWFuX2Vhc3QgIikpLAogICAgICAgIHJhY2VfYXNpYW5fc291dGggPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmFjZV9hc2lhbl9zb3V0aCksICIiLCAiYXNpYW5fc291dGggIikpLAogICAgICAgIHJhY2VfYXNpYW5fb3RoZXIgPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmFjZV9hc2lhbl9vdGhlciksICIiLCAiYXNpYW5fb3RoZXIgIikpLAogICAgICAgIHJhY2VfYmxhY2sgPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmFjZV9ibGFjayksICIiLCAiYmxhY2sgIikpLAogICAgICAgIHJhY2VfaGlzcGFuaWMgPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmFjZV9oaXNwYW5pYyksICIiLCAiaGlzcGFuaWMgIikpLAogICAgICAgIHJhY2VfbWlkZGxlX2Vhc3Rlcm4gPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmFjZV9taWRkbGVfZWFzdGVybiksICIiLCAibWlkZGxlX2Vhc3Rlcm4gIikpLAogICAgICAgIHJhY2VfbmF0aXZlX2FtZXJpY2FuID0gCiAgICAgICAgICBmYWN0b3IoaWZlbHNlKGlzLm5hKHJhY2VfbmF0aXZlX2FtZXJpY2FuKSwgIiIsICJuYXRpdmVfYW1lcmljYW4gIikpLAogICAgICAgIHJhY2VfcGFjX2lzbGFuZGVyID0gCiAgICAgICAgICBmYWN0b3IoaWZlbHNlKGlzLm5hKHJhY2VfcGFjX2lzbGFuZGVyKSwgIiIsICJwYWNfaXNsYW5kZXIgIikpLAogICAgICAgIHJhY2Vfd2hpdGUgPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmFjZV93aGl0ZSksICIiLCAid2hpdGUgIikpLAogICAgICAgIHJhY2Vfb3RoZXJfcHJlZm5vID0gCiAgICAgICAgICBmYWN0b3IoaWZlbHNlKGlzLm5hKHJhY2Vfb3RoZXJfcHJlZm5vKSwgIiIsICJvdGhlcl9wcmVmbm8gIikpLAogICAgICAgIHJhY2VfY2F0ID0gcGFzdGUwKHJhY2VfYXNpYW5fZWFzdCwgcmFjZV9hc2lhbl9zb3V0aCwgcmFjZV9hc2lhbl9vdGhlciwKICAgICAgICAgICAgICAgICAgICAgICAgICByYWNlX2JsYWNrLCByYWNlX2hpc3BhbmljLCByYWNlX21pZGRsZV9lYXN0ZXJuLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJhY2VfbmF0aXZlX2FtZXJpY2FuLCByYWNlX3BhY19pc2xhbmRlciwgcmFjZV93aGl0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICByYWNlX290aGVyX3ByZWZubyksCiAgICAgICAgcmFjZV9jYXQyID0gZmFjdG9yKHN1YigiICskIiwgIiIsIHJhY2VfY2F0KSksCiAgICAgICAgcmFjZV9jYXQzID0gZmFjdG9yKGlmZWxzZShncmVwbCgiICIsIHJhY2VfY2F0MikgPT0gVCwgIm11bHRpcmFjaWFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzLmNoYXJhY3RlcihyYWNlX2NhdDIpKSkpICU+JQogICAgICBkcGx5cjo6c2VsZWN0KHN0dWR5LCBzdWJpZDplbmRfdGltZSwgZHVyYXRpb24sIGZpbmlzaGVkOmdlbmRlciwgCiAgICAgICAgICAgICByZWxpZ2lvbl9idWRkaGlzbTphZ2VfYXBwcm94LCByYWNlX2NhdDMpICU+JQogICAgICByZW5hbWUocmFjZV9jYXQgPSByYWNlX2NhdDMpICU+JQogICAgICBtdXRhdGUoICMgZGVhbCB3aXRoIHJlbGlnaW9uCiAgICAgICAgcmVsaWdpb25fYnVkZGhpc20gPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmVsaWdpb25fYnVkZGhpc20pLCAiIiwgImJ1ZGRoaXNtICIpKSwKICAgICAgICByZWxpZ2lvbl9jaHJpc3RpYW5pdHkgPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmVsaWdpb25fY2hyaXN0aWFuaXR5KSwgIiIsICJjaHJpc3RpYW5pdHkgIikpLAogICAgICAgIHJlbGlnaW9uX2hpbmR1aXNtID0gCiAgICAgICAgICBmYWN0b3IoaWZlbHNlKGlzLm5hKHJlbGlnaW9uX2hpbmR1aXNtKSwgIiIsICJoaW5kdWlzbSAiKSksCiAgICAgICAgcmVsaWdpb25faXNsYW0gPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmVsaWdpb25faXNsYW0pLCAiIiwgImlzbGFtICIpKSwKICAgICAgICByZWxpZ2lvbl9qYWluaXNtID0gCiAgICAgICAgICBmYWN0b3IoaWZlbHNlKGlzLm5hKHJlbGlnaW9uX2phaW5pc20pLCAiIiwgImphaW5pc20gIikpLAogICAgICAgIHJlbGlnaW9uX2p1ZGFpc20gPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmVsaWdpb25fanVkYWlzbSksICIiLCAianVkYWlzbSAiKSksCiAgICAgICAgcmVsaWdpb25fc2lraGlzbSA9IAogICAgICAgICAgZmFjdG9yKGlmZWxzZShpcy5uYShyZWxpZ2lvbl9zaWtoaXNtKSwgIiIsICJzaWtoaXNtICIpKSwKICAgICAgICByZWxpZ2lvbl9vdGhlciA9IAogICAgICAgICAgZmFjdG9yKGlmZWxzZShpcy5uYShyZWxpZ2lvbl9vdGhlciksICIiLCAib3RoZXIgIikpLAogICAgICAgIHJlbGlnaW9uX25vbmUgPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmVsaWdpb25fbm9uZSksICIiLCAibm9uZSAiKSksCiAgICAgICAgcmVsaWdpb25fcHJlZm5vID0gCiAgICAgICAgICBmYWN0b3IoaWZlbHNlKGlzLm5hKHJlbGlnaW9uX3ByZWZubyksICIiLCAib3RoZXJfcHJlZm5vICIpKSwKICAgICAgICByZWxpZ2lvbl9jYXQgPSBwYXN0ZTAocmVsaWdpb25fYnVkZGhpc20sIHJlbGlnaW9uX2NocmlzdGlhbml0eSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGlnaW9uX2hpbmR1aXNtLCByZWxpZ2lvbl9pc2xhbSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGlnaW9uX2phaW5pc20sIHJlbGlnaW9uX2p1ZGFpc20sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxpZ2lvbl9zaWtoaXNtLCByZWxpZ2lvbl9vdGhlciwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGlnaW9uX25vbmUsIHJlbGlnaW9uX3ByZWZubyksCiAgICAgICAgcmVsaWdpb25fY2F0MiA9IGZhY3RvcihzdWIoIiArJCIsICIiLCByZWxpZ2lvbl9jYXQpKSwKICAgICAgICByZWxpZ2lvbl9jYXQzID0gZmFjdG9yKGlmZWxzZShncmVwbCgiICIsIHJlbGlnaW9uX2NhdDIpID09IFQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdWx0aXJlbGlnaW91cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMuY2hhcmFjdGVyKHJlbGlnaW9uX2NhdDIpKSkpICU+JQogICAgICBkcGx5cjo6c2VsZWN0KHN0dWR5OmdlbmRlciwgZmVlZGJhY2s6cmFjZV9jYXQsIHJlbGlnaW9uX2NhdDMpICU+JQogICAgICByZW5hbWUocmVsaWdpb25fY2F0ID0gcmVsaWdpb25fY2F0MykKICAgIAogICAgIyByZW1vdmUgZXh0cmFuZW91cyBkZnMgYW5kIHZhcmlhYmxlcwogICAgcm0oZCwgZF9jbGVhbl8xKQogIH0KICAKICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIikgewogICAgCiAgICAjIHNldCB0YXJnZXQgZGF0YXNldAogICAgZCA8LSBkX3Jhd19zdHVkeTMKICAgIAogICAgIyBlbmFjdCBleGNsdXNpb25hcnkgY3JpdGVyaWEKICAgIGRfY2xlYW5fMSA8LSBkICU+JQogICAgICBtdXRhdGUoZmluaXNoZWRfbW9kID0gaWZlbHNlKGlzLm5hKENBVENILi5jaGFyYWN0ZXJMKSB8IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMubmEoQ0FUQ0guLmNoYXJhY3RlclIpLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShmaW5pc2hlZCA9PSAxLCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLjUpKSkgJT4lCiAgICAgIGZpbHRlcihDQVRDSC4uY2hhcmFjdGVyTCA9PSA1LCAjIGV4Y2x1ZGUgUHMgd2hvIGZhaWwgY2F0Y2ggdHJpYWxzIAogICAgICAgICAgICAgQ0FUQ0guLmNoYXJhY3RlclIgPT0gNSwKICAgICAgICAgICAgIGZpbmlzaGVkX21vZCAhPSAwKSAlPiUgIyBleGNsdWRlIFBzIHdobyBkaWQgbm90IGNvbXBsZXRlIHRhc2sKICAgICAgbXV0YXRlKHlvYl9jb3JyZWN0ID0gYXMubnVtZXJpYygKICAgICAgICBpZmVsc2UoYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIoeW9iKSkgPiAxOTAwICYgCiAgICAgICAgICAgICAgICAgYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIoeW9iKSkgPCAyMDAwLCAKICAgICAgICAgICAgICAgYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIoeW9iKSksIE5BKSksICMgY29ycmVjdCBmb3JtYXR0aW5nIGluIHlvYgogICAgICAgIGFnZV9hcHByb3ggPSAyMDE2IC0geW9iX2NvcnJlY3QpICU+JSAjIGNhbGN1bGF0ZSBhcHByb3hpbWF0ZSBhZ2UKICAgICAgbXV0YXRlKGdlbmRlciA9IGZhY3RvcihnZW5kZXIsIGxldmVscyA9IGMoMSwgMiwgMCksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIm0iLCAiZiIsICJvdGhlciIpKSkgJT4lCiAgICAgIGZpbHRlcihhZ2VfYXBwcm94ID49IDE4KSAjIGV4Y2x1ZGUgUHMgd2hvIGFyZSB5b3VuZ2VyIHRoYW4gMTggeWVhcnMKICAgIAogICAgIyByZWNvZGUgYmFja2dyb3VuZCBhbmQgZGVtb2dyYXBoaWMgdmFyaWFibGVzCiAgICBkX2NsZWFuXzIgPC0gZF9jbGVhbl8xICU+JQogICAgICBtdXRhdGUoICMgZGVhbCB3aXRoIHN0dWR5IG51bWJlcgogICAgICAgIHN0dWR5ID0gZmFjdG9yKHN0dWR5KSkgJT4lCiAgICAgIG11dGF0ZSggIyBkZWFsIHdpdGggc3R1ZHkgZHVyYXRpb24KICAgICAgICBkdXJhdGlvbiA9IGFzLm51bWVyaWMoZGlmZnRpbWUoc3RycHRpbWUoZW5kX3RpbWUsICIlSTolTTolUyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJwdGltZShzdGFydF90aW1lLCAiJUk6JU06JVMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHMgPSAibWlucyIpKSkgJT4lCiAgICAgIG11dGF0ZSggIyBkZWFsIHdpdGggcmFjZQogICAgICAgIHJhY2VfYXNpYW5fZWFzdCA9IAogICAgICAgICAgZmFjdG9yKGlmZWxzZShpcy5uYShyYWNlX2FzaWFuX2Vhc3QpLCAiIiwgImFzaWFuX2Vhc3QgIikpLAogICAgICAgIHJhY2VfYXNpYW5fc291dGggPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmFjZV9hc2lhbl9zb3V0aCksICIiLCAiYXNpYW5fc291dGggIikpLAogICAgICAgIHJhY2VfYXNpYW5fb3RoZXIgPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmFjZV9hc2lhbl9vdGhlciksICIiLCAiYXNpYW5fb3RoZXIgIikpLAogICAgICAgIHJhY2VfYmxhY2sgPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmFjZV9ibGFjayksICIiLCAiYmxhY2sgIikpLAogICAgICAgIHJhY2VfaGlzcGFuaWMgPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmFjZV9oaXNwYW5pYyksICIiLCAiaGlzcGFuaWMgIikpLAogICAgICAgIHJhY2VfbWlkZGxlX2Vhc3Rlcm4gPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmFjZV9taWRkbGVfZWFzdGVybiksICIiLCAibWlkZGxlX2Vhc3Rlcm4gIikpLAogICAgICAgIHJhY2VfbmF0aXZlX2FtZXJpY2FuID0gCiAgICAgICAgICBmYWN0b3IoaWZlbHNlKGlzLm5hKHJhY2VfbmF0aXZlX2FtZXJpY2FuKSwgIiIsICJuYXRpdmVfYW1lcmljYW4gIikpLAogICAgICAgIHJhY2VfcGFjX2lzbGFuZGVyID0gCiAgICAgICAgICBmYWN0b3IoaWZlbHNlKGlzLm5hKHJhY2VfcGFjX2lzbGFuZGVyKSwgIiIsICJwYWNfaXNsYW5kZXIgIikpLAogICAgICAgIHJhY2Vfd2hpdGUgPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmFjZV93aGl0ZSksICIiLCAid2hpdGUgIikpLAogICAgICAgIHJhY2Vfb3RoZXJfcHJlZm5vID0gCiAgICAgICAgICBmYWN0b3IoaWZlbHNlKGlzLm5hKHJhY2Vfb3RoZXJfcHJlZm5vKSwgIiIsICJvdGhlcl9wcmVmbm8gIikpLAogICAgICAgIHJhY2VfY2F0ID0gcGFzdGUwKHJhY2VfYXNpYW5fZWFzdCwgcmFjZV9hc2lhbl9zb3V0aCwgcmFjZV9hc2lhbl9vdGhlciwKICAgICAgICAgICAgICAgICAgICAgICAgICByYWNlX2JsYWNrLCByYWNlX2hpc3BhbmljLCByYWNlX21pZGRsZV9lYXN0ZXJuLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJhY2VfbmF0aXZlX2FtZXJpY2FuLCByYWNlX3BhY19pc2xhbmRlciwgcmFjZV93aGl0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICByYWNlX290aGVyX3ByZWZubyksCiAgICAgICAgcmFjZV9jYXQyID0gZmFjdG9yKHN1YigiICskIiwgIiIsIHJhY2VfY2F0KSksCiAgICAgICAgcmFjZV9jYXQzID0gZmFjdG9yKGlmZWxzZShncmVwbCgiICIsIHJhY2VfY2F0MikgPT0gVCwgIm11bHRpcmFjaWFsIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzLmNoYXJhY3RlcihyYWNlX2NhdDIpKSkpICU+JQogICAgICBkcGx5cjo6c2VsZWN0KHN0dWR5LCBzdWJpZDplbmRfdGltZSwgZHVyYXRpb24sIGZpbmlzaGVkOmdlbmRlciwgCiAgICAgICAgICAgICByZWxpZ2lvbl9idWRkaGlzbTphZ2VfYXBwcm94LCByYWNlX2NhdDMpICU+JQogICAgICByZW5hbWUocmFjZV9jYXQgPSByYWNlX2NhdDMpICU+JQogICAgICBtdXRhdGUoICMgZGVhbCB3aXRoIHJlbGlnaW9uCiAgICAgICAgcmVsaWdpb25fYnVkZGhpc20gPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmVsaWdpb25fYnVkZGhpc20pLCAiIiwgImJ1ZGRoaXNtICIpKSwKICAgICAgICByZWxpZ2lvbl9jaHJpc3RpYW5pdHkgPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmVsaWdpb25fY2hyaXN0aWFuaXR5KSwgIiIsICJjaHJpc3RpYW5pdHkgIikpLAogICAgICAgIHJlbGlnaW9uX2hpbmR1aXNtID0gCiAgICAgICAgICBmYWN0b3IoaWZlbHNlKGlzLm5hKHJlbGlnaW9uX2hpbmR1aXNtKSwgIiIsICJoaW5kdWlzbSAiKSksCiAgICAgICAgcmVsaWdpb25faXNsYW0gPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmVsaWdpb25faXNsYW0pLCAiIiwgImlzbGFtICIpKSwKICAgICAgICByZWxpZ2lvbl9qYWluaXNtID0gCiAgICAgICAgICBmYWN0b3IoaWZlbHNlKGlzLm5hKHJlbGlnaW9uX2phaW5pc20pLCAiIiwgImphaW5pc20gIikpLAogICAgICAgIHJlbGlnaW9uX2p1ZGFpc20gPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmVsaWdpb25fanVkYWlzbSksICIiLCAianVkYWlzbSAiKSksCiAgICAgICAgcmVsaWdpb25fc2lraGlzbSA9IAogICAgICAgICAgZmFjdG9yKGlmZWxzZShpcy5uYShyZWxpZ2lvbl9zaWtoaXNtKSwgIiIsICJzaWtoaXNtICIpKSwKICAgICAgICByZWxpZ2lvbl9vdGhlciA9IAogICAgICAgICAgZmFjdG9yKGlmZWxzZShpcy5uYShyZWxpZ2lvbl9vdGhlciksICIiLCAib3RoZXIgIikpLAogICAgICAgIHJlbGlnaW9uX25vbmUgPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmVsaWdpb25fbm9uZSksICIiLCAibm9uZSAiKSksCiAgICAgICAgcmVsaWdpb25fcHJlZm5vID0gCiAgICAgICAgICBmYWN0b3IoaWZlbHNlKGlzLm5hKHJlbGlnaW9uX3ByZWZubyksICIiLCAib3RoZXJfcHJlZm5vICIpKSwKICAgICAgICByZWxpZ2lvbl9jYXQgPSBwYXN0ZTAocmVsaWdpb25fYnVkZGhpc20sIHJlbGlnaW9uX2NocmlzdGlhbml0eSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGlnaW9uX2hpbmR1aXNtLCByZWxpZ2lvbl9pc2xhbSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGlnaW9uX2phaW5pc20sIHJlbGlnaW9uX2p1ZGFpc20sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxpZ2lvbl9zaWtoaXNtLCByZWxpZ2lvbl9vdGhlciwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGlnaW9uX25vbmUsIHJlbGlnaW9uX3ByZWZubyksCiAgICAgICAgcmVsaWdpb25fY2F0MiA9IGZhY3RvcihzdWIoIiArJCIsICIiLCByZWxpZ2lvbl9jYXQpKSwKICAgICAgICByZWxpZ2lvbl9jYXQzID0gZmFjdG9yKGlmZWxzZShncmVwbCgiICIsIHJlbGlnaW9uX2NhdDIpID09IFQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdWx0aXJlbGlnaW91cyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMuY2hhcmFjdGVyKHJlbGlnaW9uX2NhdDIpKSkpICU+JQogICAgICBkcGx5cjo6c2VsZWN0KHN0dWR5OmdlbmRlciwgZmVlZGJhY2s6cmFjZV9jYXQsIHJlbGlnaW9uX2NhdDMpICU+JQogICAgICByZW5hbWUocmVsaWdpb25fY2F0ID0gcmVsaWdpb25fY2F0MykKICAgIAogICAgIyByZW5hbWUgcmVzcG9uc2UgdmFyaWFibGVzCiAgICBkX2NsZWFuXzMgPC0gZF9jbGVhbl8yCiAgICBuYW1lcyhkX2NsZWFuXzMpIDwtIGdzdWIoImdldCIsICIiLCBuYW1lcyhkX2NsZWFuXzMpKQogICAgbmFtZXMoZF9jbGVhbl8zKSA8LSBnc3ViKCJcXC4iLCAiIiwgbmFtZXMoZF9jbGVhbl8zKSkKICAgIG5hbWVzKGRfY2xlYW5fMykgPC0gZ3N1YigiY2hhciIsICJfY2hhciIsIG5hbWVzKGRfY2xlYW5fMykpCiAgICBuYW1lcyhkX2NsZWFuXzMpW25hbWVzKGRfY2xlYW5fMykgJWluJSBjKCJfY2hhcmFjdGVyTCIsICJfY2hhcmFjdGVyUiIpXSA8LSAKICAgICAgYygiY2hhcmFjdGVyTCIsICJjaGFyYWN0ZXJSIikKICAgIAogICAgIyByZWNvZGUgcmVzcG9uc2UgdmFyaWFibGVzIChjZW50ZXIpCiAgICBkX2NsZWFuXzQgPC0gZF9jbGVhbl8zCiAgICBmb3IoaSBpbiAxMTo5MikgewogICAgICBkX2NsZWFuXzRbLGldIDwtIGRfY2xlYW5fNFssaV0gLSA0ICMgdHJhbnNmb3JtIGZyb20gMSB0byA3IC0tPiAtMyB0byAzCiAgICB9CiAgICAKICAgICMgcmVjb2RlIGNoYXJhY3RlckwgdnMuIGNoYXJhY3RlclIgYXMgYmVldGxlIHZzLiByb2JvdAogICAgZF9jbGVhbl81X2RlbW8gPC0gZF9jbGVhbl80ICU+JQogICAgICBkcGx5cjo6c2VsZWN0KHN0dWR5OmNvbmRpdGlvbiwgeW9iOnJlbGlnaW9uX2NhdCkKICAgIAogICAgZF9jbGVhbl81X2NoYXJhY3RlckwgPC0gZF9jbGVhbl80ICU+JQogICAgICBtdXRhdGUodGFyZ2V0ID0gY2hhcmFjdGVyTCkgJT4lCiAgICAgIGRwbHlyOjpzZWxlY3Qoc3R1ZHksIHN1YmlkLCB0YXJnZXQsIGhhcHB5X2NoYXJhY3Rlckw6Q0FUQ0hfY2hhcmFjdGVyTCkKICAgIG5hbWVzKGRfY2xlYW5fNV9jaGFyYWN0ZXJMKSA8LSBnc3ViKCJfY2hhcmFjdGVyTCIsICIiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzKGRfY2xlYW5fNV9jaGFyYWN0ZXJMKSkKICAgIAogICAgZF9jbGVhbl81X2NoYXJhY3RlclIgPC0gZF9jbGVhbl80ICU+JQogICAgICBtdXRhdGUodGFyZ2V0ID0gY2hhcmFjdGVyUikgJT4lCiAgICAgIGRwbHlyOjpzZWxlY3Qoc3R1ZHksIHN1YmlkLCB0YXJnZXQsIGhhcHB5X2NoYXJhY3RlclI6Q0FUQ0hfY2hhcmFjdGVyUikKICAgIG5hbWVzKGRfY2xlYW5fNV9jaGFyYWN0ZXJSKSA8LSBnc3ViKCJfY2hhcmFjdGVyUiIsICIiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzKGRfY2xlYW5fNV9jaGFyYWN0ZXJSKSkKICAgIAogICAgZF9jbGVhbiA8LSBkX2NsZWFuXzVfY2hhcmFjdGVyTCAlPiUKICAgICAgZnVsbF9qb2luKGRfY2xlYW5fNV9jaGFyYWN0ZXJSKSAlPiUKICAgICAgZnVsbF9qb2luKGRfY2xlYW5fNV9kZW1vKSAlPiUKICAgICAgZHBseXI6OnNlbGVjdChzdHVkeSwgc3ViaWQsIGRhdGU6cmVsaWdpb25fY2F0LCB0YXJnZXQ6Q0FUQ0gpCiAgICAKICAgICMgcmVtb3ZlIGV4dHJhbmVvdXMgZGZzIGFuZCB2YXJpYWJsZXMKICAgIHJtKGQsIGRfY2xlYW5fMSwgZF9jbGVhbl8yLCBkX2NsZWFuXzMsIGRfY2xlYW5fNCwgZF9jbGVhbl81X2NoYXJhY3RlckwsIAogICAgICAgZF9jbGVhbl81X2NoYXJhY3RlclIsIGRfY2xlYW5fNV9kZW1vLCBpKQogIH0KICAKICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0IikgewogICAgCiAgICAjIHNldCB0YXJnZXQgZGF0YXNldAogICAgZCA8LSBkX3Jhd19zdHVkeTQKCiAgICAgICAgIyBlbmFjdCBleGNsdXNpb25hcnkgY3JpdGVyaWEKICAgIGRfY2xlYW5fMSA8LSBkICU+JQogICAgICBtdXRhdGUoZmluaXNoZWRfbW9kID0gaWZlbHNlKGlzLm5hKENBVENIKSwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoZmluaXNoZWQgPT0gMSwgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC41KSkpICU+JQogICAgICBmaWx0ZXIoQ0FUQ0ggPT0gMSwgIyBleGNsdWRlIFBzIHdobyBmYWlsIGNhdGNoIHRyaWFscyAKICAgICAgICAgICAgIGZpbmlzaGVkX21vZCAhPSAwKSAlPiUgIyBleGNsdWRlIFBzIHdobyBkaWQgbm90IGNvbXBsZXRlIHRhc2sKICAgICAgbXV0YXRlKHlvYl9jb3JyZWN0ID0gYXMubnVtZXJpYygKICAgICAgICBpZmVsc2UoYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIoeW9iKSkgPiAxOTAwICYgCiAgICAgICAgICAgICAgICAgYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIoeW9iKSkgPCAyMDAwLCAKICAgICAgICAgICAgICAgYXMubnVtZXJpYyhhcy5jaGFyYWN0ZXIoeW9iKSksIE5BKSksICMgY29ycmVjdCBmb3JtYXR0aW5nIGluIHlvYgogICAgICAgIGFnZV9hcHByb3ggPSAyMDE2IC0geW9iX2NvcnJlY3QpICU+JSAjIGNhbGN1bGF0ZSBhcHByb3hpbWF0ZSBhZ2UKICAgICAgbXV0YXRlKGdlbmRlciA9IGZhY3RvcihnZW5kZXIsIGxldmVscyA9IGMoMSwgMiwgMCksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IGMoIm0iLCAiZiIsICJvdGhlciIpKSkgJT4lCiAgICAgIGZpbHRlcihhZ2VfYXBwcm94ID49IDE4KSAjIGV4Y2x1ZGUgUHMgd2hvIGFyZSB5b3VuZ2VyIHRoYW4gMTggeWVhcnMKICAgIAogICAgIyByZWNvZGUgb25lIGNoYXJhY3RlcgogICAgZF9jbGVhbl8yIDwtIGRfY2xlYW5fMSAlPiUKICAgICAgbXV0YXRlKGNvbmRpdGlvbiA9IGZhY3RvcihpZmVsc2UoCiAgICAgICAgZ3JlcGwoInZlZ2V0YXRpdmUiLCBhcy5jaGFyYWN0ZXIoY29uZGl0aW9uKSksICJwdnMiLAogICAgICAgIGlmZWxzZShncmVwbCgiYmx1ZSIsIGFzLmNoYXJhY3Rlcihjb25kaXRpb24pKSwgImJsdWVqYXkiLAogICAgICAgICAgICAgICBpZmVsc2UoZ3JlcGwoImNoaW1wIiwgYXMuY2hhcmFjdGVyKGNvbmRpdGlvbikpLCAiY2hpbXAiLAogICAgICAgICAgICAgICAgICAgICAgYXMuY2hhcmFjdGVyKGNvbmRpdGlvbikpKSkpKQoKICAgICMgcmVjb2RlIGJhY2tncm91bmQgYW5kIGRlbW9ncmFwaGljIHZhcmlhYmxlcwogICAgZF9jbGVhbiA8LSBkX2NsZWFuXzIgJT4lCiAgICAgIG11dGF0ZSggIyBkZWFsIHdpdGggc3R1ZHkgbnVtYmVyCiAgICAgICAgc3R1ZHkgPSBmYWN0b3Ioc3R1ZHkpKSAlPiUKICAgICAgbXV0YXRlKCAjIGRlYWwgd2l0aCBzdHVkeSBkdXJhdGlvbgogICAgICAgIGR1cmF0aW9uID0gYXMubnVtZXJpYyhkaWZmdGltZShzdHJwdGltZShlbmRfdGltZSwgIiVJOiVNOiVTIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnB0aW1lKHN0YXJ0X3RpbWUsICIlSTolTTolUyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0cyA9ICJtaW5zIikpKSAlPiUKICAgICAgbXV0YXRlKCAjIGRlYWwgd2l0aCByYWNlCiAgICAgICAgcmFjZV9hc2lhbl9lYXN0ID0gCiAgICAgICAgICBmYWN0b3IoaWZlbHNlKGlzLm5hKHJhY2VfYXNpYW5fZWFzdCksICIiLCAiYXNpYW5fZWFzdCAiKSksCiAgICAgICAgcmFjZV9hc2lhbl9zb3V0aCA9IAogICAgICAgICAgZmFjdG9yKGlmZWxzZShpcy5uYShyYWNlX2FzaWFuX3NvdXRoKSwgIiIsICJhc2lhbl9zb3V0aCAiKSksCiAgICAgICAgcmFjZV9hc2lhbl9vdGhlciA9IAogICAgICAgICAgZmFjdG9yKGlmZWxzZShpcy5uYShyYWNlX2FzaWFuX290aGVyKSwgIiIsICJhc2lhbl9vdGhlciAiKSksCiAgICAgICAgcmFjZV9ibGFjayA9IAogICAgICAgICAgZmFjdG9yKGlmZWxzZShpcy5uYShyYWNlX2JsYWNrKSwgIiIsICJibGFjayAiKSksCiAgICAgICAgcmFjZV9oaXNwYW5pYyA9IAogICAgICAgICAgZmFjdG9yKGlmZWxzZShpcy5uYShyYWNlX2hpc3BhbmljKSwgIiIsICJoaXNwYW5pYyAiKSksCiAgICAgICAgcmFjZV9taWRkbGVfZWFzdGVybiA9IAogICAgICAgICAgZmFjdG9yKGlmZWxzZShpcy5uYShyYWNlX21pZGRsZV9lYXN0ZXJuKSwgIiIsICJtaWRkbGVfZWFzdGVybiAiKSksCiAgICAgICAgcmFjZV9uYXRpdmVfYW1lcmljYW4gPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmFjZV9uYXRpdmVfYW1lcmljYW4pLCAiIiwgIm5hdGl2ZV9hbWVyaWNhbiAiKSksCiAgICAgICAgcmFjZV9wYWNfaXNsYW5kZXIgPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmFjZV9wYWNfaXNsYW5kZXIpLCAiIiwgInBhY19pc2xhbmRlciAiKSksCiAgICAgICAgcmFjZV93aGl0ZSA9IAogICAgICAgICAgZmFjdG9yKGlmZWxzZShpcy5uYShyYWNlX3doaXRlKSwgIiIsICJ3aGl0ZSAiKSksCiAgICAgICAgcmFjZV9vdGhlcl9wcmVmbm8gPSAKICAgICAgICAgIGZhY3RvcihpZmVsc2UoaXMubmEocmFjZV9vdGhlcl9wcmVmbm8pLCAiIiwgIm90aGVyX3ByZWZubyAiKSksCiAgICAgICAgcmFjZV9jYXQgPSBwYXN0ZTAocmFjZV9hc2lhbl9lYXN0LCByYWNlX2FzaWFuX3NvdXRoLCByYWNlX2FzaWFuX290aGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJhY2VfYmxhY2ssIHJhY2VfaGlzcGFuaWMsIHJhY2VfbWlkZGxlX2Vhc3Rlcm4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmFjZV9uYXRpdmVfYW1lcmljYW4sIHJhY2VfcGFjX2lzbGFuZGVyLCByYWNlX3doaXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJhY2Vfb3RoZXJfcHJlZm5vKSwKICAgICAgICByYWNlX2NhdDIgPSBmYWN0b3Ioc3ViKCIgKyQiLCAiIiwgcmFjZV9jYXQpKSwKICAgICAgICByYWNlX2NhdDMgPSBmYWN0b3IoaWZlbHNlKGdyZXBsKCIgIiwgcmFjZV9jYXQyKSA9PSBULCAibXVsdGlyYWNpYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXMuY2hhcmFjdGVyKHJhY2VfY2F0MikpKSkgJT4lCiAgICAgIGRwbHlyOjpzZWxlY3Qoc3R1ZHksIHN1YmlkOmVuZF90aW1lLCBkdXJhdGlvbiwgZmluaXNoZWQ6Z2VuZGVyLCAKICAgICAgICAgICAgIGVkdWNhdGlvbjphZ2VfYXBwcm94LCByYWNlX2NhdDMpICU+JQogICAgICByZW5hbWUocmFjZV9jYXQgPSByYWNlX2NhdDMpCiAgICAKICAgICMgZmlsdGVyIGNvbmRpdGlvbnMgaWYgZGVzaXJlZAogICAgaWYoaXMuZWxlbWVudCgibm9uZSIsIGNob3NlbkV4Y2x1ZGUpKSB7fSBlbHNlIHsKICAgICAgZF9jbGVhbiA8LSBkX2NsZWFuICU+JQogICAgICAgIGZpbHRlcighY29uZGl0aW9uICVpbiUgY2hvc2VuRXhjbHVkZSkKICAgIH0KICAgIAogICAgIyByZW1vdmUgZXh0cmFuZW91cyBkZnMgYW5kIHZhcmlhYmxlcwogICAgcm0oZCwgZF9jbGVhbl8xLCBkX2NsZWFuXzIpCiAgfQogIAojICAgIyB0cmFuc2Zvcm0gdG8gMCB0byA2IHNjYWxlCiMgICBkX2NsZWFuIDwtIGRfY2xlYW4gJT4lCiMgICAgIGdhdGhlcihtYywgc2NvcmUsIGhhcHB5OnByaWRlKSAlPiUKIyAgICAgbXV0YXRlKHNjb3JlID0gc2NvcmUgKyAzKSAlPiUgIyB0cmFuc2Zvcm0gZnJvbSAtMyB0byAzIC0tPiAwIHRvIDYKIyAgICAgc3ByZWFkKG1jLCBzY29yZSkKICAKICAjIHJlbW92ZSBvdXRsaWVycwogIGlmKGNob3Nlbk91dGxpZXJIYW5kbGluZyA9PSAicmVtb3ZlIikgewogICAgCiAgICBpZihkYXRhc291cmNlICVpbiUgYygic3R1ZHkgMSIsICJzdHVkeSAyIiwgInN0dWR5IDQiKSkgewogICAgICAgIGRfY2xlYW4gPC0gZF9jbGVhbiAlPiUKICAgICAgICBnYXRoZXIobWMsIHNjb3JlLCBoYXBweTpwcmlkZSkgJT4lCiAgICAgICAgZ3JvdXBfYnkoY29uZGl0aW9uLCBtYykgJT4lCiAgICAgICAgZmlsdGVyKCFzY29yZSAlaW4lIGJveHBsb3Quc3RhdHMoc2NvcmUsIDIuNSkkb3V0KSAlPiUKICAgICAgICBzcHJlYWQobWMsIHNjb3JlKSAlPiUKICAgICAgICBhcnJhbmdlKGNvbmRpdGlvbiwgc3ViaWQpCiAgICB9CiAgICAKICAgIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDMiKSB7CiAgICAgIGRfY2xlYW4gPC0gZF9jbGVhbiAlPiUKICAgICAgICBnYXRoZXIobWMsIHNjb3JlLCBoYXBweTpwcmlkZSkgJT4lCiAgICAgICAgZ3JvdXBfYnkodGFyZ2V0LCBtYykgJT4lCiAgICAgICAgZmlsdGVyKCFzY29yZSAlaW4lIGJveHBsb3Quc3RhdHMoc2NvcmUsIDIuNSkkb3V0KSAlPiUKICAgICAgICBzcHJlYWQobWMsIHNjb3JlKSAlPiUKICAgICAgICBhcnJhbmdlKHRhcmdldCwgc3ViaWQpCiAgICB9CiAgICAKICB9CiAgCiAgIyBmaWx0ZXIgaXRlbXMgaWYgZGVzaXJlZAogIGlmKGlzLmVsZW1lbnQoIm5vbmUiLCBjaG9zZW5FeGNsdWRlSXRlbSkpIHt9IGVsc2UgewogICAgZF9jbGVhbiA8LSBkX2NsZWFuICU+JQogICAgICBkcGx5cjo6c2VsZWN0KC1jb250YWlucyhjaG9zZW5FeGNsdWRlSXRlbSkpCiAgfQoKICAjIHJldHVybiBjbGVhbmVkIGRhdGFzZXQKICByZXR1cm4oZF9jbGVhbikKfQoKIyBtYWtlIGZ1bmN0aW9uIGZvciBleGFtaW5pbmcgZXhjbHVzaW9uIG9mIHBhcnRpY2lwYW50cwpleGNsdWRlZENvdW50cyA8LSBmdW5jdGlvbihkYXRhc291cmNlKSB7CiAgCiAgIyBzZXQgZGF0YXNvdXJjZQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXsKICAgIGQgPC0gZDEKICAgIGRfcmF3IDwtIGRfcmF3X3N0dWR5MQogIH0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7CiAgICBkIDwtIGQyCiAgICBkX3JhdyA8LSBkX3Jhd19zdHVkeTIKICB9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMyIpewogICAgZCA8LSBkMwogICAgZF9yYXcgPC0gZF9yYXdfc3R1ZHkzCiAgfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDQiKXsKICAgIGQgPC0gZDQKICAgIGRfcmF3IDwtIGRfcmF3X3N0dWR5NAogIH0KICAKICAjIGdldCBzdWJpZHMgb2Ygc3VjY2Vzc2Z1bCBwYXJ0aWNpcGFudHMKICBkX3N1YmlkcyA8LSBsZXZlbHMoZmFjdG9yKGFzLmNoYXJhY3RlcihkJHN1YmlkKSkpCiAgCiAgIyBnZXQgc3ViaWRzIG9mIGV4Y2x1ZGVkIHBhcnRpY2lwYW50cwogIGRfZXhjbHVkZWQgPC0gZF9yYXcgJT4lCiAgICBmaWx0ZXIoaXMuZWxlbWVudChzdWJpZCwgZF9zdWJpZHMpID09IEZBTFNFKSAlPiUKICAgIGRwbHlyOjpzZWxlY3QoY29uZGl0aW9uLCBzdWJpZCwgZmluaXNoZWQsIHN0YXJ0c193aXRoKCJDQVRDSCIpLCB5b2IpCgogICMgY291bnQgZXhjbHVkZWQgcGFydGljaXBhbnRzCiAgZF9leGNsdWRlZF9uIDwtIGxlbmd0aChkX2V4Y2x1ZGVkJHN1YmlkKQogIAogIGlmKGRhdGFzb3VyY2UgJWluJSBjKCJzdHVkeSAxIiwgInN0dWR5IDIiLCAic3R1ZHkgNCIpKSB7CiAgICAjIGNvdW50IHBhcnRpY2lwYW50cyB3aG8gZGlkIG5vdCBmaW5pc2gKICAgIGRfZXhjbHVkZWRfdW5maW5pc2hlZCA8LSBkX2V4Y2x1ZGVkICU+JQogICAgICBmaWx0ZXIoaXMubmEoQ0FUQ0gpID09IFQsCiAgICAgICAgICAgICBmaW5pc2hlZCAhPSAxKSAlPiUKICAgICAgZHBseXI6OnNlbGVjdChzdWJpZCkgJT4lCiAgICAgIGMoKQogICAgCiAgICAjIGNvdW50IHBhcnRpY2lwYW50cyB3aG8gZmluaXNoZWQsIGJ1dCBmYWlsZWQgY2F0Y2ggdHJpYWwKICAgIGRfZXhjbHVkZWRfQ0FUQ0ggPC0gZF9leGNsdWRlZCAlPiUKICAgICAgZmlsdGVyKGlzLmVsZW1lbnQoc3ViaWQsIGRfZXhjbHVkZWRfdW5maW5pc2hlZCRzdWJpZCkgPT0gRkFMU0UpICU+JQogICAgICBmaWx0ZXIoQ0FUQ0ggIT0gMSkgJT4lCiAgICAgIGRwbHlyOjpzZWxlY3Qoc3ViaWQpICU+JQogICAgICBjKCkKICB9CiAgCiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMyIpIHsKICAgICMgY291bnQgcGFydGljaXBhbnRzIHdobyBkaWQgbm90IGZpbmlzaAogICAgZF9leGNsdWRlZF91bmZpbmlzaGVkIDwtIGRfZXhjbHVkZWQgJT4lCiAgICAgIGZpbHRlcihpcy5uYShDQVRDSC4uY2hhcmFjdGVyTCkgPT0gVCwKICAgICAgICAgICAgIGlzLm5hKENBVENILi5jaGFyYWN0ZXJSKSA9PSBULAogICAgICAgICAgICAgZmluaXNoZWQgIT0gMSkgJT4lCiAgICAgIGRwbHlyOjpzZWxlY3Qoc3ViaWQpICU+JQogICAgICBjKCkKICAgIAogICAgIyBjb3VudCBwYXJ0aWNpcGFudHMgd2hvIGZpbmlzaGVkLCBidXQgZmFpbGVkIGNhdGNoIHRyaWFsCiAgICBkX2V4Y2x1ZGVkX0NBVENIIDwtIGRfZXhjbHVkZWQgJT4lCiAgICAgIGZpbHRlcihpcy5lbGVtZW50KHN1YmlkLCBkX2V4Y2x1ZGVkX3VuZmluaXNoZWQkc3ViaWQpID09IEZBTFNFKSAlPiUKICAgICAgZmlsdGVyKENBVENILi5jaGFyYWN0ZXJMICE9IDUgfCBDQVRDSC4uY2hhcmFjdGVyUiAhPSA1KSAlPiUKICAgICAgZHBseXI6OnNlbGVjdChzdWJpZCkgJT4lCiAgICAgIGMoKQogIH0KICAKICAjIGNvdW50IHBhcnRpY2lwYW50cyB3aG8gZmluaXNoZWQgYW5kIHBhc3NlZCBjYXRjaCB0cmlhbCwgCiAgIyBidXQgZGlkIG5vdCBwcm92aWRlIHllYXIgb2YgYmlydGgKICBkX2V4Y2x1ZGVkX25vX3lvYiA8LSBkX2V4Y2x1ZGVkICU+JQogICAgZmlsdGVyKGlzLmVsZW1lbnQoc3ViaWQsIGRfZXhjbHVkZWRfdW5maW5pc2hlZCRzdWJpZCkgPT0gRkFMU0UsCiAgICAgICAgICAgaXMuZWxlbWVudChzdWJpZCwgZF9leGNsdWRlZF9DQVRDSCRzdWJpZCkgPT0gRkFMU0UpICU+JQogICAgbXV0YXRlKHlvYiA9IGFzLm51bWVyaWMoYXMuY2hhcmFjdGVyKHlvYikpKSAlPiUKICAgIGZpbHRlcihpcy5uYSh5b2IpIHwgeW9iIDwgMTg5OSB8IG5jaGFyKGFzLmNoYXJhY3Rlcih5b2IpKSAhPSA0KSAlPiUKICAgIGRwbHlyOjpzZWxlY3Qoc3ViaWQpICU+JQogICAgYygpCiAgCiAgIyBjb3VudCBwYXJ0aWNpcGFudHMgd2hvIGZpbmlzaGVkIGFuZCBwYXNzZWQgY2F0Y2ggdHJpYWwsIAogICMgYnV0IGRpZCBub3QgcHJvdmlkZSB5ZWFyIG9mIGJpcnRoCiAgZF9leGNsdWRlZF95b3VuZyA8LSBkX2V4Y2x1ZGVkICU+JQogICAgZmlsdGVyKGlzLmVsZW1lbnQoc3ViaWQsIGRfZXhjbHVkZWRfdW5maW5pc2hlZCRzdWJpZCkgPT0gRkFMU0UsCiAgICAgICAgICAgaXMuZWxlbWVudChzdWJpZCwgZF9leGNsdWRlZF9DQVRDSCRzdWJpZCkgPT0gRkFMU0UsCiAgICAgICAgICAgaXMuZWxlbWVudChzdWJpZCwgZF9leGNsdWRlZF9ub195b2Ikc3ViaWQpID09IEZBTFNFKSAlPiUKICAgIG11dGF0ZSh5b2IgPSBhcy5udW1lcmljKGFzLmNoYXJhY3Rlcih5b2IpKSkgJT4lCiAgICBmaWx0ZXIoaXMubmEoeW9iKSB8IDIwMTYgLSB5b2IgPCAxOCkgJT4lCiAgICBkcGx5cjo6c2VsZWN0KHN1YmlkKSAlPiUKICAgIGMoKQogIAogICMgc3VtIHVwIGV4Y2x1ZGVkIHBhcnRpY2lwYW50cyBieSBjYXRlZ29yeQogIHRvdGFsIDwtIHN1bShsZW5ndGgoZF9leGNsdWRlZF91bmZpbmlzaGVkJHN1YmlkKSwKICAgICAgICAgICAgICAgbGVuZ3RoKGRfZXhjbHVkZWRfQ0FUQ0gkc3ViaWQpLAogICAgICAgICAgICAgICBsZW5ndGgoZF9leGNsdWRlZF9ub195b2Ikc3ViaWQpLAogICAgICAgICAgICAgICBsZW5ndGgoZF9leGNsdWRlZF95b3VuZyRzdWJpZCkpCiAgCiAgIyBjYWxjdWxhdGUgY291bnRzCiAgZXhjbHVkZWRfY291bnRzIDwtIAogICAgZGF0YS5mcmFtZSgiZGlkX25vdF9maW5pc2giID0gbGVuZ3RoKGRfZXhjbHVkZWRfdW5maW5pc2hlZCRzdWJpZCksCiAgICAgICAgICAgICAgICJmYWlsZWRfY2F0Y2hfdHJpYWwiID0gbGVuZ3RoKGRfZXhjbHVkZWRfQ0FUQ0gkc3ViaWQpLAogICAgICAgICAgICAgICAiZGlkX25vdF9wcm92aWRlX3lvYiIgPSBsZW5ndGgoZF9leGNsdWRlZF9ub195b2Ikc3ViaWQpLAogICAgICAgICAgICAgICAidG9vX3lvdW5nIiA9IGxlbmd0aChkX2V4Y2x1ZGVkX3lvdW5nJHN1YmlkKSwKICAgICAgICAgICAgICAgIlRPVEFMX2V4Y2x1ZGVkIiA9IHRvdGFsLAogICAgICAgICAgICAgICAiVE9UQUxfcGFydGljaXBhdGVkIiA9IGxlbmd0aChkJHN1YmlkKSwKICAgICAgICAgICAgICAgIk9WRVJBTExfVE9UQUwiID0gc3VtKHRvdGFsLCBsZW5ndGgoZCRzdWJpZCkpKQogIAogIGlmKHRvdGFsICE9IGRfZXhjbHVkZWRfbikgewogICAgc3RvcCgiRXJyb3I6IDQgc291cmNlcyBvZiBleGNsdXNpb24gZG8gbm90IGFkZCB1cCB0byB0b3RhbC4iKQogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuKGV4Y2x1ZGVkX2NvdW50cykKICAgIH0KfQoKIyBtYWtlIGZ1bmN0aW9uIGZvciBzdHJpcHBpbmcgZGF0YWZyYW1lcyBmb3IgZGltZW5zaW9uIHJlZHVjYXRpb24KbWFrZURSREYgPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSwgY2hvc2VuQ29uZGl0aW9uKSB7CiAgCiAgIyBzZXQgdGFyZ2V0IGRhdGFzZXQKICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxIil7ZCA8LSBkMX0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkMn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7CiAgICAjIHJlbmFtZSB2YXJpYWJsZXMgZm9yIGVhc2Ugb2YgZnVuY3Rpb24gYXBwbHBpY2F0aW9uCiAgICBkIDwtIGQzICU+JQogICAgICByZW5hbWUob3JkZXIgPSBjb25kaXRpb24sCiAgICAgICAgICAgICBjb25kaXRpb24gPSB0YXJnZXQpCiAgICAKICAgICMgcmVuYW1lIHN1YmlkcyBieSBjb25kaXRpb24gaWYgY29sbGFwc2VzIGFjcm9zcyBjb25kaXRpb25zCiAgICBkIDwtIGQgJT4lCiAgICAgIG11dGF0ZShzdWJpZCA9IHBhc3RlKGNvbmRpdGlvbiwgc3ViaWQsIHNlcCA9ICJfIikpCiAgfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDQiKXtkIDwtIGQ0fQogIAogICMgZmlsdGVyIGJ5IGNvbmRpdGlvbiBpZiBzcGVjaWZpZWQKICBpZihjaG9zZW5Db25kaXRpb24gJWluJSBjKCJiZWV0bGUiLCAicm9ib3QiKSkgewogICAgZCA8LSBkICU+JSBmaWx0ZXIoY29uZGl0aW9uID09IGNob3NlbkNvbmRpdGlvbikKICB9CiAgCiAgIyBtYWtlIHN0cmlwcGVkIGRhdGFmcmFtZSBmb3IgZGltZW5zaW9uIHJlZHVjYXRpb24gYW5hbHlzZXMKICBkX3N0cmlwIDwtIGQgJT4lCiAgICBkcGx5cjo6c2VsZWN0KHN1YmlkLCBoYXBweTpwcmlkZSkKICBkX3N0cmlwIDwtIGRhdGEuZnJhbWUoZF9zdHJpcFssLTFdLCByb3cubmFtZXMgPSBkX3N0cmlwJHN1YmlkKQogIAogICMgcmV0dXJuIHN0cmlwcGVkIGRhdGFmcmFtZQogIHJldHVybihkX3N0cmlwKQp9CgojIG1ha2UgZGVtb2dyYXBoaWNzIGZ1bmN0aW9ucwpkZW1vU2FtcGxlU2l6ZSA8LSBmdW5jdGlvbihkYXRhc291cmNlKSB7CgogICMgc2V0IHRhcmdldCBkYXRhc2V0CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMSIpe2QgPC0gZDF9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMiIpe2QgPC0gZDJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMyIpewogICAgIyByZW5hbWUgdmFyaWFibGVzIGZvciBlYXNlIG9mIGZ1bmN0aW9uIGFwcGxwaWNhdGlvbgogICAgZCA8LSBkMyAlPiUKICAgICAgcmVuYW1lKG9yZGVyID0gY29uZGl0aW9uLAogICAgICAgICAgICAgY29uZGl0aW9uID0gdGFyZ2V0KQogIH0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkNH0KCiAgIyBnZXQgc2FtcGxlIHNpemUgcGVyIGNvbmRpdGlvbgogIHNhbXBsZV9zaXplIDwtIHZlY3RvcigpCiAgZm9yKGkgaW4gbGV2ZWxzKGQkY29uZGl0aW9uKSkgewogICAgc2FtcGxlX3NpemVbYXMuY2hhcmFjdGVyKGkpXSA8LSAKICAgICAgYXMubnVtZXJpYyhkICU+JSBmaWx0ZXIoY29uZGl0aW9uID09IGkpICU+JSBkcGx5cjo6c2VsZWN0KHN1YmlkKSAlPiUgCiAgICAgICAgICAgICAgICAgICB1bmlxdWUoKSAlPiUgY291bnQoKSkKICB9CgogICMgYWRkIHRvdGFsIHNhbXBsZSBzaXplICAKICBzYW1wbGVfc2l6ZVsiYWxsIl0gPC0gYXMubnVtZXJpYyhkICU+JSBkcGx5cjo6c2VsZWN0KHN1YmlkKSAlPiUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlxdWUoKSAlPiUgY291bnQoKSkKICAKICAjIG1ha2UgaW50byBkYXRhZnJhbWUgZm9yIHVzaW5nIGthYmxlCiAgc2FtcGxlX3NpemUgPC0gZGF0YS5mcmFtZShzYW1wbGVfc2l6ZSkgJT4lCiAgICByb3duYW1lc190b19jb2x1bW4oKSAlPiUKICAgIHJlbmFtZShjb25kaXRpb24gPSByb3duYW1lLAogICAgICAgICAgIG4gPSBzYW1wbGVfc2l6ZSkKICAKICAjIHJldHVybiBkYXRhZnJhbWUgZm9yIHVzaW5nIGthYmxlCiAgcmV0dXJuKHNhbXBsZV9zaXplKQp9CmRlbW9EdXJhdGlvbiA8LSBmdW5jdGlvbihkYXRhc291cmNlKSB7CgogICMgc2V0IHRhcmdldCBkYXRhc2V0CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMSIpe2QgPC0gZDF9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMiIpe2QgPC0gZDJ9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMyIpewogICAgIyByZWNvZGUgdmFyaWFibGVzIGZvciBlYXNlIG9mIGZ1bmN0aW9uIGFwcGxwaWNhdGlvbgogICAgZCA8LSBkMyAlPiUKICAgICAgbXV0YXRlKGNvbmRpdGlvbiA9ICJ3aXRoaW4tc3ViamVjdHMiKQogIH0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkNH0KCiAgIyBnZXQgc2FtcGxlIHNpemUgcGVyIGNvbmRpdGlvbgogIGR1cmF0aW9uIDwtIGQgJT4lCiAgICBncm91cF9ieShjb25kaXRpb24pICU+JQogICAgc3VtbWFyaXNlKG1pbl9kdXJhdGlvbiA9IG1pbihkdXJhdGlvbiksCiAgICAgICAgICAgICAgbWF4X2R1cmF0aW9uID0gbWF4KGR1cmF0aW9uKSwKICAgICAgICAgICAgICBtZWRpYW5fZHVyYXRpb24gPSBtZWRpYW4oZHVyYXRpb24pLAogICAgICAgICAgICAgIG1lYW5fZHVyYXRpb24gPSBtZWFuKGR1cmF0aW9uKSwKICAgICAgICAgICAgICBzZF9kdXJhdGlvbiA9IHNkKGR1cmF0aW9uKSkKCiAgIyBhZGQgdG90YWwgZHVyYXRpb24KICBpZihkYXRhc291cmNlICVpbiUgYygic3R1ZHkgMSIsICJzdHVkeSAyIiwgInN0dWR5IDQiKSkgewogICAgYWxsIDwtIGQgJT4lCiAgICAgIHN1bW1hcmlzZShtaW5fZHVyYXRpb24gPSBtaW4oZHVyYXRpb24pLAogICAgICAgICAgICAgICAgbWF4X2R1cmF0aW9uID0gbWF4KGR1cmF0aW9uKSwKICAgICAgICAgICAgICAgIG1lZGlhbl9kdXJhdGlvbiA9IG1lZGlhbihkdXJhdGlvbiksCiAgICAgICAgICAgICAgICBtZWFuX2R1cmF0aW9uID0gbWVhbihkdXJhdGlvbiksCiAgICAgICAgICAgICAgICBzZF9kdXJhdGlvbiA9IHNkKGR1cmF0aW9uKSkgJT4lCiAgICAgIG11dGF0ZShjb25kaXRpb24gPSAiYWxsIikKICAgIGR1cmF0aW9uIDwtIHJiaW5kKGR1cmF0aW9uLCBhbGwpICMgbm90IHN1cmUgd2h5IGZ1bGxfam9pbiBkb2Vzbid0IHdvcmsgICAgCiAgfQoKICAjIHJldHVybiBkYXRhZnJhbWUgZm9yIHVzaW5nIGthYmxlCiAgcmV0dXJuKGR1cmF0aW9uKQp9CmRlbW9BZ2UgPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSkgewoKICAjIHNldCB0YXJnZXQgZGF0YXNldAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXtkIDwtIGQxfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDIiKXtkIDwtIGQyfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDMiKXsKICAgICMgcmVjb2RlIHZhcmlhYmxlcyBmb3IgZWFzZSBvZiBmdW5jdGlvbiBhcHBscGljYXRpb24KICAgIGQgPC0gZDMgJT4lCiAgICAgIG11dGF0ZShjb25kaXRpb24gPSAid2l0aGluLXN1YmplY3RzIikKICB9CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgNCIpe2QgPC0gZDR9CgogICMgZ2V0IHNhbXBsZSBzaXplIHBlciBjb25kaXRpb24KICBhZ2UgPC0gZCAlPiUKICAgIGdyb3VwX2J5KGNvbmRpdGlvbikgJT4lCiAgICBzdW1tYXJpc2UobWluX2FnZSA9IG1pbihhZ2VfYXBwcm94KSwKICAgICAgICAgICAgICBtYXhfYWdlID0gbWF4KGFnZV9hcHByb3gpLAogICAgICAgICAgICAgIG1lZGlhbl9hZ2UgPSBtZWRpYW4oYWdlX2FwcHJveCksCiAgICAgICAgICAgICAgbWVhbl9hZ2UgPSBtZWFuKGFnZV9hcHByb3gpLAogICAgICAgICAgICAgIHNkX2FnZSA9IHNkKGFnZV9hcHByb3gpKQoKICAjIGFkZCB0b3RhbCBhZ2UKICBpZihkYXRhc291cmNlICVpbiUgYygic3R1ZHkgMSIsICJzdHVkeSAyIiwgInN0dWR5IDQiKSkgewogICAgYWxsIDwtIGQgJT4lCiAgICAgIHN1bW1hcmlzZShtaW5fYWdlID0gbWluKGFnZV9hcHByb3gpLAogICAgICAgICAgICAgICAgbWF4X2FnZSA9IG1heChhZ2VfYXBwcm94KSwKICAgICAgICAgICAgICAgIG1lZGlhbl9hZ2UgPSBtZWRpYW4oYWdlX2FwcHJveCksCiAgICAgICAgICAgICAgICBtZWFuX2FnZSA9IG1lYW4oYWdlX2FwcHJveCksCiAgICAgICAgICAgICAgICBzZF9hZ2UgPSBzZChhZ2VfYXBwcm94KSkgJT4lCiAgICAgIG11dGF0ZShjb25kaXRpb24gPSAiYWxsIikKICAgIGFnZSA8LSBmdWxsX2pvaW4oYWdlLCBhbGwpCiAgfQoKICAjIHJldHVybiBkYXRhZnJhbWUgZm9yIHVzaW5nIGthYmxlCiAgcmV0dXJuKGFnZSkKfQpkZW1vR2VuZGVyIDwtIGZ1bmN0aW9uKGRhdGFzb3VyY2UpIHsKCiAgIyBzZXQgdGFyZ2V0IGRhdGFzZXQKICBpZihkYXRhc291cmNlID09ICJzdHVkeSAxIil7ZCA8LSBkMX0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAyIil7ZCA8LSBkMn0KICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIil7ZCA8LSBkM30KICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7ZCA8LSBkNH0KCiAgIyBnZXQgZ2VuZGVyIHBlciBjb25kaXRpb24gYW5kIG92ZXJhbGwKICBpZihkYXRhc291cmNlICVpbiUgYygic3R1ZHkgMSIsICJzdHVkeSAyIiwgInN0dWR5IDQiKSkgewogICAgZ2VuZGVyIDwtIGRhdGEuZnJhbWUoYWRkbWFyZ2lucyh3aXRoKGQsIHRhYmxlKGNvbmRpdGlvbiwgZ2VuZGVyKSkpKSAlPiUKICAgICAgZmlsdGVyKGdlbmRlciAhPSAiU3VtIikgJT4lCiAgICAgIHJlbmFtZShuID0gRnJlcSkKICB9CiAgCiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgMyIpIHsKICAgIGdlbmRlciA8LSBkYXRhLmZyYW1lKHdpdGgoZCwgdGFibGUoZ2VuZGVyKSkpICU+JQogICAgICByZW5hbWUobiA9IEZyZXEpICU+JQogICAgICBtdXRhdGUoY29uZGl0aW9uID0gIlN1bSIpICU+JQogICAgICBkcGx5cjo6c2VsZWN0KGNvbmRpdGlvbiwgZ2VuZGVyLCBuKQogIH0KICAKICBpZihkYXRhc291cmNlICVpbiUgYygic3R1ZHkgMSIsICJzdHVkeSAyIiwgInN0dWR5IDMiKSkgewogICAgZ2VuZGVyIDwtIGdlbmRlciAlPiUKICAgIG11dGF0ZShjb25kaXRpb24gPSBmYWN0b3IoaWZlbHNlKGNvbmRpdGlvbiA9PSAiU3VtIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxsIiwgYXMuY2hhcmFjdGVyKGNvbmRpdGlvbikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJiZWV0bGUiLCAicm9ib3QiLCAiYWxsIikpKSAlPiUKICAgIGFycmFuZ2UoY29uZGl0aW9uLCBnZW5kZXIpICU+JQogICAgc3ByZWFkKGdlbmRlciwgbikKICB9CiAgCiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgNCIpIHsKICAgIGdlbmRlciA8LSBnZW5kZXIgJT4lCiAgICBtdXRhdGUoY29uZGl0aW9uID0gZmFjdG9yKGlmZWxzZShjb25kaXRpb24gPT0gIlN1bSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFsbCIsIGFzLmNoYXJhY3Rlcihjb25kaXRpb24pKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYyhsZXZlbHMoZCRjb25kaXRpb24pLCAiYWxsIikpKSAlPiUKICAgIGFycmFuZ2UoY29uZGl0aW9uLCBnZW5kZXIpICU+JQogICAgc3ByZWFkKGdlbmRlciwgbikKICB9CiAgCiAgIyByZXR1cm4gZGF0YWZyYW1lIGZvciB1c2luZyBrYWJsZQogIHJldHVybihnZW5kZXIpCn0KZGVtb1JhY2UgPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSkgewoKICAjIHNldCB0YXJnZXQgZGF0YXNldAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXtkIDwtIGQxfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDIiKXtkIDwtIGQyfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDMiKXtkIDwtIGQzfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDQiKXtkIDwtIGQ0fQoKICAjIGdldCByYWNlIHBlciBjb25kaXRpb24gYW5kIG92ZXJhbGwKICBpZihkYXRhc291cmNlICVpbiUgYygic3R1ZHkgMSIsICJzdHVkeSAyIiwgInN0dWR5IDQiKSkgewogICAgcmFjZSA8LSBkYXRhLmZyYW1lKGFkZG1hcmdpbnMod2l0aChkLCB0YWJsZShjb25kaXRpb24sIHJhY2VfY2F0KSkpKSAlPiUKICAgICAgZmlsdGVyKHJhY2VfY2F0ICE9ICJTdW0iKSAlPiUKICAgICAgcmVuYW1lKG4gPSBGcmVxKQogIH0KICAKICBpZihkYXRhc291cmNlID09ICJzdHVkeSAzIikgewogICAgcmFjZSA8LSBkYXRhLmZyYW1lKHdpdGgoZCwgdGFibGUocmFjZV9jYXQpKSkgJT4lCiAgICAgIHJlbmFtZShuID0gRnJlcSkgJT4lCiAgICAgIG11dGF0ZShjb25kaXRpb24gPSAiU3VtIikgJT4lCiAgICAgIGRwbHlyOjpzZWxlY3QoY29uZGl0aW9uLCByYWNlX2NhdCwgbikKICB9CiAgCiAgaWYoZGF0YXNvdXJjZSAlaW4lIGMoInN0dWR5IDEiLCAic3R1ZHkgMiIsICJzdHVkeSAzIikpIHsKICAgIHJhY2UgPC0gcmFjZSAlPiUKICAgIG11dGF0ZShjb25kaXRpb24gPSBmYWN0b3IoaWZlbHNlKGNvbmRpdGlvbiA9PSAiU3VtIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxsIiwgYXMuY2hhcmFjdGVyKGNvbmRpdGlvbikpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJiZWV0bGUiLCAicm9ib3QiLCAiYWxsIikpKSAlPiUKICAgIGFycmFuZ2UoY29uZGl0aW9uLCByYWNlX2NhdCkgJT4lCiAgICBzcHJlYWQocmFjZV9jYXQsIG4pCiAgfQogIAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDQiKSB7CiAgICByYWNlIDwtIHJhY2UgJT4lCiAgICBtdXRhdGUoY29uZGl0aW9uID0gZmFjdG9yKGlmZWxzZShjb25kaXRpb24gPT0gIlN1bSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFsbCIsIGFzLmNoYXJhY3Rlcihjb25kaXRpb24pKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYyhsZXZlbHMoZCRjb25kaXRpb24pLCAiYWxsIikpKSAlPiUKICAgIGFycmFuZ2UoY29uZGl0aW9uLCByYWNlX2NhdCkgJT4lCiAgICBzcHJlYWQocmFjZV9jYXQsIG4pCiAgfQogIAogICMgcmV0dXJuIGRhdGFmcmFtZSBmb3IgdXNpbmcga2FibGUKICByZXR1cm4ocmFjZSkKfQpkZW1vUmVsaWdpb24gPC0gZnVuY3Rpb24oZGF0YXNvdXJjZSkgewoKICAjIHNldCB0YXJnZXQgZGF0YXNldAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDEiKXtkIDwtIGQxfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDIiKXtkIDwtIGQyfQogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDMiKXtkIDwtIGQzfQoKICAjIGdldCByZWxpZ2lvbiBwZXIgY29uZGl0aW9uIGFuZCBvdmVyYWxsCiAgaWYoZGF0YXNvdXJjZSAlaW4lIGMoInN0dWR5IDEiLCAic3R1ZHkgMiIpKSB7CiAgICByZWxpZ2lvbiA8LSBkYXRhLmZyYW1lKGFkZG1hcmdpbnMod2l0aChkLCB0YWJsZShjb25kaXRpb24sIHJlbGlnaW9uX2NhdCkpKSkgJT4lCiAgICAgIGZpbHRlcihyZWxpZ2lvbl9jYXQgIT0gIlN1bSIpICU+JQogICAgICByZW5hbWUobiA9IEZyZXEpCiAgfQogIAogIGlmKGRhdGFzb3VyY2UgPT0gInN0dWR5IDMiKSB7CiAgICByZWxpZ2lvbiA8LSBkYXRhLmZyYW1lKHdpdGgoZCwgdGFibGUocmVsaWdpb25fY2F0KSkpICU+JQogICAgICByZW5hbWUobiA9IEZyZXEpICU+JQogICAgICBtdXRhdGUoY29uZGl0aW9uID0gIlN1bSIpICU+JQogICAgICBkcGx5cjo6c2VsZWN0KGNvbmRpdGlvbiwgcmVsaWdpb25fY2F0LCBuKQogIH0KICAKICBpZihkYXRhc291cmNlICVpbiUgYygic3R1ZHkgMSIsICJzdHVkeSAyIiwgInN0dWR5IDMiKSkgewogICAgcmVsaWdpb24gPC0gcmVsaWdpb24gJT4lCiAgICBtdXRhdGUoY29uZGl0aW9uID0gZmFjdG9yKGlmZWxzZShjb25kaXRpb24gPT0gIlN1bSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFsbCIsIGFzLmNoYXJhY3Rlcihjb25kaXRpb24pKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiYmVldGxlIiwgInJvYm90IiwgImFsbCIpKSkgJT4lCiAgICBhcnJhbmdlKGNvbmRpdGlvbiwgcmVsaWdpb25fY2F0KSAlPiUKICAgIHNwcmVhZChyZWxpZ2lvbl9jYXQsIG4pCiAgfQogIAogICMgcmV0dXJuIGRhdGFmcmFtZSBmb3IgdXNpbmcga2FibGUKICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0Iil7CiAgICBzdG9wKCJSZWxpZ2lvbiBpbmZvcm1hdGlvbiBub3QgYXZhaWxhYmxlIGZvciBTdHVkeSA0IikKICB9IGVsc2Uge3JldHVybihyZWxpZ2lvbil9Cn0KZGVtb0VkdWNhdGlvbiA8LSBmdW5jdGlvbihkYXRhc291cmNlKSB7CgogICMgc2V0IHRhcmdldCBkYXRhc2V0CiAgaWYoZGF0YXNvdXJjZSA9PSAic3R1ZHkgNCIpe2QgPC0gZDR9CiAgCiAgIyBnZXQgZWR1Y2F0aW9uIHBlciBjb25kaXRpb24gYW5kIG92ZXJhbGwKICBpZihkYXRhc291cmNlID09ICJzdHVkeSA0IikgewogICAgZWR1Y2F0aW9uIDwtIAogICAgICBkYXRhLmZyYW1lKGFkZG1hcmdpbnMod2l0aChkLCB0YWJsZShjb25kaXRpb24sIGVkdWNhdGlvbikpKSkgJT4lCiAgICAgIGZpbHRlcihlZHVjYXRpb24gIT0gIlN1bSIpICU+JQogICAgICByZW5hbWUobiA9IEZyZXEpICU+JQogICAgICBtdXRhdGUoY29uZGl0aW9uID0gZmFjdG9yKGlmZWxzZShjb25kaXRpb24gPT0gIlN1bSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhbGwiLCBhcy5jaGFyYWN0ZXIoY29uZGl0aW9uKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYyhsZXZlbHMoZCRjb25kaXRpb24pLCAiYWxsIikpLAogICAgICAgICAgICAgZWR1Y2F0aW9uID0gZmFjdG9yKGVkdWNhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKDE6NywgMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygic29tZV9IUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSFNfZGlwbG9tYSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic29tZV9jb2xsZWdlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NvY2lhdGVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWNoZWxvcnMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvbWVfZ3JhZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JhZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHJlZl9ubyIpKSkgJT4lCiAgICAgIGFycmFuZ2UoY29uZGl0aW9uLCBlZHVjYXRpb24pICU+JQogICAgICBzcHJlYWQoZWR1Y2F0aW9uLCBuKQogIH0KICAKICAjIHJldHVybiBkYXRhZnJhbWUgZm9yIHVzaW5nIGthYmxlCiAgaWYoZGF0YXNvdXJjZSAlaW4lIGMoInN0dWR5IDEiLCAic3R1ZHkgMiIsICJzdHVkeSAzIikpewogICAgc3RvcCgiRWR1Y2F0aW9uIGluZm9ybWF0aW9uIG5vdCBhdmFpbGFibGUgZm9yIFN0dWRpZXMgMS0zIikKICB9IGVsc2Uge3JldHVybihlZHVjYXRpb24pfQp9CgojIHBsb3R0aW5nIGZ1bmN0aW9ucwptYWtlRmFjZXRMYWJzIDwtIGZ1bmN0aW9uKGRmX3Bsb3R0aW5nKSB7CiAgZmFjZXRfbGFiZWxzIDwtIGFycmF5KCkKICBkZl9wbG90dGluZyA8LSBkZl9wbG90dGluZyAlPiUgbXV0YXRlKGNvbmRpdGlvbiA9IGZhY3Rvcihjb25kaXRpb24pKQogIGZvcihpIGluIDE6bGVuZ3RoKGxldmVscyhkZl9wbG90dGluZyRjb25kaXRpb24pKSkgewogICAgZGYgPC0gZGZfcGxvdHRpbmcgJT4lIGZpbHRlcihjb25kaXRpb24gPT0gbGV2ZWxzKGRmX3Bsb3R0aW5nJGNvbmRpdGlvbilbaV0pICU+JQogICAgICBzZWxlY3QoY29uZGl0aW9uLCBuKSAlPiUgdW5pcXVlKCkKICAgIGZhY2V0X2xhYmVsc1tpXSA8LSBwYXN0ZTAoZGYkY29uZGl0aW9uLCAiIChuID0gIiwgZGYkbiwgIikiKQogIH0KICBuYW1lcyhmYWNldF9sYWJlbHMpIDwtIGxldmVscyhkZl9wbG90dGluZyRjb25kaXRpb24pCiAgcmV0dXJuKGZhY2V0X2xhYmVscykKfQpgYGAKCmBgYHtyIG1vZGVsaW5nIGRlY2lzaW9uc30KIyByZW1vdmUgb3V0bGllcnM/CmNob3Nlbk91dGxpZXJIYW5kbGluZyA8LSAia2VlcCIKIyBjaG9zZW5PdXRsaWVySGFuZGxpbmcgPC0gInJlbW92ZSIKCiMgZXhjbHVkZSBhbnkgY29uZGl0aW9ucyBpbiBzdHVkeSA0PwpjaG9zZW5FeGNsdWRlIDwtICJub25lIgojIGNob3NlbkV4Y2x1ZGUgPC0gYygic3RhcGxlciIsICJjYXIiLCAiY29tcHV0ZXIiKQoKIyBleGNsdWRlIGFueSBpdGVtcz8KY2hvc2VuRXhjbHVkZUl0ZW0gPC0gIm5vbmUiCiMgY2hvc2VuRXhjbHVkZUl0ZW0gPC0gImNvbXB1dGF0aW9ucyIKCiMgTk9URTogYWx3YXlzIGNob29zZSBtaW5pbWFsIHJlc2lkdWFsIChmbSA9ICJtaW5yZXMiKSBpbnN0ZWFkIG9mIE1MIGJlY2F1c2Ugb2Ygbm9uLW5vcm1hbGl0eQoKIyBmb3IgRUZBcywgd2hhdCBraW5kIG9mIGNvcnJlbGF0aW9uPwpjaG9zZW5Db3JUeXBlIDwtICJjb3IiICMgcGVhcnNvbiBjb3JyZWxhdGlvbgojIGNob3NlbkNvclR5cGUgPC0gInBvbHkiICMgcG9seWNob3JpYyBjb3JyZWxhdGlvbgoKIyBmb3IgRUZBcywgd2hhdCBraW5kIG9mIHJvdGF0aW9uPwpjaG9zZW5Sb3RUeXBlIDwtICJ2YXJpbWF4IiAjIHZhcmltYXggcm90YXRpb24KIyBjaG9zZW5Sb3RUeXBlIDwtICJvYmxpbWluIiAjIG9ibGltaW4gcm90YXRpb24KIyBjaG9zZW5Sb3RUeXBlIDwtICJub25lIiAjIG5vIHJvdGF0aW9uCgpkYXRhLmZyYW1lKCJjb25kaXRpb25zRXhjbHVkZWQiID0gY2hvc2VuRXhjbHVkZSwKICAgICAgICAgICAib3V0bGllckhhbmRsaW5nIiA9IGNob3Nlbk91dGxpZXJIYW5kbGluZywKICAgICAgICAgICAiRUZBX2NvcnJlbGF0aW9uIiA9IGNob3NlbkNvclR5cGUsCiAgICAgICAgICAgIkVGQV9yb3RhdGlvbiIgPSBjaG9zZW5Sb3RUeXBlKQpgYGAKCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48YSBocmVmPSIjaGVhZGVyIj5iYWNrIHRvIFRPQzwvYT48L3A+CgojIERhdGEgcHJlcGFyYXRpb24KCmBgYHtyIGRhdGEgdXBsb2FkfQojIHN0dWR5IDEgKDIwMTUtMTItMTUsIDIgY29uZGl0aW9ucywgYmV0d2Vlbi1zdWJqZWN0cykKZF9yYXdfc3R1ZHkxIDwtIHJlYWQuY3N2KCJodHRwOi8vc3RhbmZvcmQuZWR1L35rd2Vpc21hbi9leHBlcmltZW50cy9ib2R5aGVhcnRtaW5kL2JvZHloZWFydG1pbmRfc3R1ZHkxLmNzdiIpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAxIikKCiMgc3R1ZHkgMiAoMjAxNi0wMS0xMiwgMiBjb25kaXRpb25zLCBiZXR3ZWVuLXN1YmplY3RzIC0gUkVQTElDQVRJT04pCmRfcmF3X3N0dWR5MiA8LSByZWFkLmNzdigiaHR0cDovL3N0YW5mb3JkLmVkdS9+a3dlaXNtYW4vZXhwZXJpbWVudHMvYm9keWhlYXJ0bWluZC9ib2R5aGVhcnRtaW5kX3N0dWR5Mi5jc3YiKSAlPiUKICBtdXRhdGUoc3R1ZHkgPSAic3R1ZHkgMiIpCgojIHN0dWR5IDMgKDIwMTYtMDEtMTAsIDIgY29uZGl0aW9ucywgd2l0aGluLXN1YmplY3RzKQpkX3Jhd19zdHVkeTMgPC0gcmVhZC5jc3YoImh0dHA6Ly9zdGFuZm9yZC5lZHUvfmt3ZWlzbWFuL2V4cGVyaW1lbnRzL2JvZHloZWFydG1pbmQvYm9keWhlYXJ0bWluZF9zdHVkeTMuY3N2IikgJT4lCiAgbXV0YXRlKHN0dWR5ID0gInN0dWR5IDMiKQoKIyBzdHVkeSA0ICgyMDE2LTAxLTE0LCAyMSBjb25kaXRpb25zLCBiZXR3ZWVuLXN1YmplY3RzKQpkX3Jhd19zdHVkeTQgPC0gcmVhZC5jc3YoImh0dHA6Ly9zdGFuZm9yZC5lZHUvfmt3ZWlzbWFuL2V4cGVyaW1lbnRzL2JvZHloZWFydG1pbmQvYm9keWhlYXJ0bWluZF9zdHVkeTQuY3N2IikgJT4lCiAgbXV0YXRlKHN0dWR5ID0gInN0dWR5IDQiKQpgYGAKCmBgYHtyIGRhdGEgY2xlYW51cH0KIyBjbGVhbiB1cCBkYXRhc2V0cwpkMSA8LSBjbGVhbnVwKCJzdHVkeSAxIikKZDIgPC0gY2xlYW51cCgic3R1ZHkgMiIpCmQzIDwtIGNsZWFudXAoInN0dWR5IDMiKQpkNCA8LSBjbGVhbnVwKCJzdHVkeSA0IikKYGBgCgpgYGB7ciBkYXRhZnJhbWVzIGZvciBkaW1lbnNpb24gcmVkdWNhdGlvbn0KIyBtYWtlIGRhdGFmcmFtZXMgZm9yIHMxCiMgZDFfYmVldGxlIDwtIG1ha2VEUkRGKCJzdHVkeSAxIiwgImJlZXRsZSIpCiMgZDFfcm9ib3QgPC0gbWFrZURSREYoInN0dWR5IDEiLCAicm9ib3QiKQpkMV9hbGwgPC0gbWFrZURSREYoInN0dWR5IDEiLCAiYWxsIikKCiMgbWFrZSBkYXRhZnJhbWVzIGZvciBzdHVkeSAyCiMgZDJfYmVldGxlIDwtIG1ha2VEUkRGKCJzdHVkeSAyIiwgImJlZXRsZSIpCiMgZDJfcm9ib3QgPC0gbWFrZURSREYoInN0dWR5IDIiLCAicm9ib3QiKQpkMl9hbGwgPC0gbWFrZURSREYoInN0dWR5IDIiLCAiYWxsIikKCiMgbWFrZSBkYXRhZnJhbWVzIGZvciBzdHVkeSAzCiMgZDNfYmVldGxlIDwtIG1ha2VEUkRGKCJzdHVkeSAzIiwgImJlZXRsZSIpCiMgZDNfcm9ib3QgPC0gbWFrZURSREYoInN0dWR5IDMiLCAicm9ib3QiKQpkM19hbGwgPC0gbWFrZURSREYoInN0dWR5IDMiLCAiYWxsIikKCiMgbWFrZSBkYXRhZnJhbWVzIGZvciBzdHVkeSA0CmQ0X2FsbCA8LSBtYWtlRFJERigic3R1ZHkgNCIsICJhbGwiKQpgYGAKCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48YSBocmVmPSIjaGVhZGVyIj5iYWNrIHRvIFRPQzwvYT48L3A+CgojIEFuYWx5c2lzIHBsYW4KCkZvciBhbGwgc3R1ZGllcyB3ZSBjb25kdWN0IGV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNlcyB1c2luZyBQZWFyc29uIGNvcnJlbGF0aW9ucyB0byBmaW5kIG1pbmltdW0gcmVzaWR1YWwgc29sdXRpb25zLiAKCkZvciBlYWNoIHN0dWR5LCB3ZSBmaXJzdCBleGFtaW5lIG1heGltYWwgdW5yb3RhdGVkIGFuZCByb3RhdGVkIHNvbHV0aW9ucy4gVG8gZGV0ZXJtaW5lIHRoZSBtYXhpbXVtIG51bWJlciBvZiBmYWN0b3JzIHRvIGV4dHJhY3QsIHdlIHVzZSB0aGUgZm9sbG93aW5nIHJ1bGUgb2YgdGh1bWI6IFdpdGggJHAkIG9ic2VydmF0aW9ucyBwZXIgcGFydGljaXBhbnQsIHdlIGNhbiBleHRyYWN0IGEgbWF4aW11bSBvZiAkayQgZmFjdG9ycywgd2hlcmUgJChwLWspKjIgPiBwK2skLCBpLmUuLCAkayA8IHAvMyQuIFRodXMsIHdpdGggNDAgbWVudGFsIGNhcGFjaXR5IGl0ZW1zLCB3ZSBjYW4gZXh0cmFjdCBhIG1heGltdW0gb2YgMTMgZmFjdG9ycy4KClRvIGRldGVybWluZSBob3cgbWFueSBmYWN0b3JzIHRvIHJldGFpbiwgd2UgdXNlIHRoZSBmb2xsb3dpbmcgcHJlc2V0IHJldGVudGlvbiBjcml0ZXJpYSwgY29uc2lkZXJpbmcgdGhlIHVucm90YXRlZCBtYXhpbWFsIHNvbHV0aW9uOgoKICAtIEVhY2ggZmFjdG9yIG11c3QgaGF2ZSBhbiBlaWdlbnZhbHVlID4xLjAuCiAgLSBFYWNoIGZhY3RvciBtdXN0IGluZGl2aWR1YWxseSBhY2NvdW50IGZvciA+NSUgb2YgdGhlIHRvdGFsIHZhcmlhbmNlIGluIHRoZSBtYXhpbWFsIG1vZGVsLgogIC0gRWFjaCBmYWN0b3IgbXVzdCBiZSB0aGUgZG9taW5hbnQgZmFjdG9yIChpLmUuLCB0aGUgZmFjdG9yIHdpdGggdGhlIGhpZ2hlc3QgZmFjdG9yIGxvYWRpbmcpIGZvciDiiaUxIG1lbnRhbCBjYXBhY2l0eSBpdGVtLgoKV2UgdGhlbiBleGFtaW5lIGFuZCBpbnRlcnByZXQgdmFyaW1heC1yb3RhdGVkIHNvbHV0aW9ucywgZXh0cmFjdGluZyBvbmx5IHRoZSBudW1iZXIgb2YgZmFjdG9ycyB0aGF0IG1lZXQgdGhlc2UgY3JpdGVyaWEuCgoqTm90ZSo6IEZvciBTdHVkaWVzIDEtMiwgd2UgaW5pdGlhbGx5IHBsYW5uZWQgdG8gY29uZHVjdCBkaW1lbnNpb24gcmVkdWN0aW9uIGFuYWx5c2VzIGZvciBlYWNoIGNvbmRpdGlvbiAoYmVldGxlIHZzLiByb2JvdCkgc2VwYXJhdGVseS4gSG93ZXZlciwgd2Ugbm93IGNvbnNpZGVyIHRoaXMgYW5hbHlzaXMgcGxhbiB0byBoYXZlIGJlZW4gZnVuZGFtZW50YWxseSBmbGF3ZWQ6IEVhY2ggb2YgdGhlc2Ugc2VwYXJhdGUgYW5hbHlzZXMgaXMgb25seSBjYXBhYmxlIG9mIHN1cmZhY2luZyBmYWN0b3JzIHRoYXQgaGlnaGxpZ2h0IHN1YnN0YW50aWFsIGRpc2FncmVlbWVudCBhbW9uZyBwYXJ0aWNpcGFudHMgd2l0aGluIHRoYXQgY29uZGl0aW9uIHRodXMgZmFpbGluZyB0byBjYXB0dXJlIGtleSBkaWZmZXJlbmNlcyBpbiBhdHRyaWJ1dGlvbnMgb2YgbWVudGFsIGNhcGFjaXRpZXMgdG8gYmVldGxlcyB2cy4gcm9ib3RzLCB3aXRoIG5vIGZvcm1hbCBtZWFucyBvZiBzeW50aGVzaXppbmcgcmVzdWx0cyBhY3Jvc3MgY29uZGl0aW9ucy4gTm9uZXRoZWxlc3MsIHRoZSByZXN1bHRzIG9mIHRoZXNlIGFuYWx5c2VzIGFyZSBnZW5lcmFsbHkgY29uc2lzdGVudCB3aXRoIHRoZSBmaW5kaW5ncyByZXBvcnRlZCBoZXJlOiBUaGUgbW9zdCBwcm9taW5lbnQgYW5kIHJlbGlhYmxlIGZpbmRpbmcgd2l0aGluIGVhY2ggY29uZGl0aW9uIGlzIHRoYXQgcGFydGljaXBhbnRzIGRpc3Rpbmd1aXNoIGJldHdlZW4gZW1vdGlvbmFsIGFuZCBwZXJjZXB0dWFsIHZhcmlldGllcyBvZiBleHBlcmllbmNlLiBTZWUgPGEgaHJlZj0iaHR0cHM6Ly9vc2YuaW8vemQzbXUiLCB0YXJnZXQ9ImJsYW5rIj5odHRwczovL29zZi5pby96ZDNtdTwvYT4gZm9yIHRoZSBwcmVyZWdpc3RlcmVkIGFuYWx5c2VzLCBpbmNsdWRlZCBhbmFseXNpcyBzY3JpcHRzLgoKIyBTdHVkeSAxCgpEZXNpZ246IDIgY29uZGl0aW9ucyAoYmVldGxlLCByb2JvdCksIGJldHdlZW4tc3ViamVjdHMKRGF0ZSBjb25kdWN0ZWQ6IDIwMTUtMTItMTUKCiMjIERlbW9ncmFwaGljcwoKYGBge3IgczEgZGVtb2dyYXBoaWNzfQojIGV4YW1pbmUgZXhjbHVzaW9uCmV4Y2x1ZGVkQ291bnRzKCJzdHVkeSAxIikKCiMgbWFrZSBkZW1vZ3JhcGhpY3MgdGFibGVzCmRlbW9TYW1wbGVTaXplKCJzdHVkeSAxIikKZGVtb0R1cmF0aW9uKCJzdHVkeSAxIikKZGVtb0FnZSgic3R1ZHkgMSIpCmRlbW9HZW5kZXIoInN0dWR5IDEiKQpkZW1vUmFjZSgic3R1ZHkgMSIpCmRlbW9SZWxpZ2lvbigic3R1ZHkgMSIpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMjIEV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNpcwoKIyMjIFN0ZXAgMTogUnVuIG1heGltYWwgRUZBICh3aXRob3V0IGFuZCB3aXRoIHJvdGF0aW9uKQoKYGBge3IgczEgYWxsIG5vIHJvdGF0aW9ufQojIGV4YW1pbmUgc2NyZWUgcGxvdApmYS5wYXJhbGxlbChkMV9hbGwpCgojIHJ1biBFRkEgd2l0aG91dCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDFfYWxsX3Vucm90YXRlZCA8LSBmYShkMV9hbGwsIDEzLCByb3RhdGUgPSAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCnByaW50KGVmYV9kMV9hbGxfdW5yb3RhdGVkKQoKIyBleGFtaW5lIGVpZ2VudmFsdWVzIGFuZCB2YXJpYW5jZSBleHBsYWluZWQKZWZhX2QxX2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgPC0gcHJpbnQoZWZhX2QxX2FsbF91bnJvdGF0ZWQpJFZhY2NvdW50ZWQgJT4lCiAgdCgpICU+JQogIGRhdGEuZnJhbWUoKQoKIyBjb3VudCBmYWN0b3JzIHdpdGggZWlnZW52YWx1ZXMgPiAxIGFuZCB2YXJpYW5jZSBleHBsYWluZWQgPiA1JQplZmFfZDFfYWxsX3Vucm90YXRlZF9uZmFjdG9ycyA8LSBlZmFfZDFfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyAlPiUKICBmaWx0ZXIoU1MubG9hZGluZ3MgPiAxLCBQcm9wb3J0aW9uLkV4cGxhaW5lZCA+IDAuMDUpICU+JQogIGNvdW50KCkgJT4lCiAgYXMubnVtZXJpYygpCmVmYV9kMV9hbGxfdW5yb3RhdGVkX25mYWN0b3JzCmBgYAoKYGBge3IgczEgYWxsIHJvdGF0aW9ufQplZmFfZDFfYWxsX3JvdGF0ZWQgPC0gZmEoZDFfYWxsLCBlZmFfZDFfYWxsX3Vucm90YXRlZF9uZmFjdG9ycywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCiMgY2hlY2sgdGhhdCBlYWNoIG9mIHRoZXNlIGZhY3RvcnMgaXMgdGhlIGRvbWluYW50IGZhY3RvciBmb3IgYXQgbGVhc3Qgb25lIG1lbnRhbCBjYXBhY2l0eSBpdGVtCmVmYV9kMV9hbGxfcm90YXRlZF9sb2FkaW5ncyA8LSBmYS5zb3J0KGxvYWRpbmdzKGVmYV9kMV9hbGxfcm90YXRlZClbXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHkpICU+JQogIG11dGF0ZShsb2FkaW5nX2FicyA9IGFicyhsb2FkaW5nKSkgJT4lCiAgZ3JvdXBfYnkoY2FwYWNpdHkpICU+JQogIHRvcF9uKDEsIGxvYWRpbmdfYWJzKSAlPiUKICB1bmdyb3VwKCkKZWZhX2QxX2FsbF9yb3RhdGVkX2xvYWRpbmdzCgojIGRyb3AgYW55IGZhY3RvcnMgd2hlcmUgbiA8IDEKZWZhX2QxX2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApCgojIHNldCBudW1iZXIgb2YgZmFjdG9ycyB0byBleHRyYWN0Cm5mYWN0b3JzX2QxX2FsbCA8LSBlZmFfZDFfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkgJT4lCiAgbnJvdygpCm5mYWN0b3JzX2QxX2FsbApgYGAKCiMjIyBTdGVwIDI6IFJ1biBFRkEgd2l0aCB2YXJpbWF4IHJvdGF0aW9uCgpgYGB7ciBzMSBhbGwgdmFyaW1heCByb3RhdGlvbn0KIyBydW4gRUZBIHdpdGggcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QxX2FsbF9yb3RhdGVkTiA8LSBmYShkMV9hbGwsIG5mYWN0b3JzX2QxX2FsbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2QxX2FsbF9yb3RhdGVkTikKCiMgZ2V0IGxvYWRpbmdzIGZvciBlYWNoIGZhY3RvcgplZmFfZDFfYWxsX3JvdGF0ZWROX2xvYWRpbmdzIDwtIGxvYWRpbmdzKGVmYV9kMV9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JSAKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIm1jIikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyMjIyBGYWN0b3IgbG9hZGluZ3MgdGFibGUKCmBgYHtyIHMxIGxvYWRpbmdzIHRhYmxlfQpkYXRhLmZyYW1lKGxvYWRpbmdzKGZhLnNvcnQoZWZhX2QxX2FsbF9yb3RhdGVkTikpW10pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiTSIpKSwgZnVucyhyb3VuZDIpKQpgYGAKCiMgU3R1ZHkgMgoKRGVzaWduOiAyIGNvbmRpdGlvbnMgKGJlZXRsZSwgcm9ib3QpLCBiZXR3ZWVuLXN1YmplY3RzIChyZXBsaWNhdGlvbiBvZiBTdHVkeSAxKQpEYXRlIGNvbmR1Y3RlZDogMjAxNi0wMS0xMgoKIyMgRGVtb2dyYXBoaWNzCgpgYGB7ciBzMiBkZW1vZ3JhcGhpY3N9CiMgZXhhbWluZSBleGNsdXNpb24KZXhjbHVkZWRDb3VudHMoInN0dWR5IDIiKQoKIyBtYWtlIGRlbW9ncmFwaGljcyB0YWJsZXMKZGVtb1NhbXBsZVNpemUoInN0dWR5IDIiKQpkZW1vRHVyYXRpb24oInN0dWR5IDIiKQpkZW1vQWdlKCJzdHVkeSAyIikKZGVtb0dlbmRlcigic3R1ZHkgMiIpCmRlbW9SYWNlKCJzdHVkeSAyIikKZGVtb1JlbGlnaW9uKCJzdHVkeSAyIikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyMgRXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2lzCgojIyMgU3RlcCAxOiBSdW4gbWF4aW1hbCBFRkEgKHdpdGhvdXQgYW5kIHdpdGggcm90YXRpb24pCgpgYGB7ciBzMiBhbGwgbm8gcm90YXRpb259CiMgZXhhbWluZSBzY3JlZSBwbG90CmZhLnBhcmFsbGVsKGQyX2FsbCkKCiMgcnVuIEVGQSB3aXRob3V0IHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kMl9hbGxfdW5yb3RhdGVkIDwtIGZhKGQyX2FsbCwgMTMsIHJvdGF0ZSA9ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2QyX2FsbF91bnJvdGF0ZWQpCgojIGV4YW1pbmUgZWlnZW52YWx1ZXMgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZAplZmFfZDJfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyA8LSBwcmludChlZmFfZDJfYWxsX3Vucm90YXRlZCkkVmFjY291bnRlZCAlPiUKICB0KCkgJT4lCiAgZGF0YS5mcmFtZSgpCgojIGNvdW50IGZhY3RvcnMgd2l0aCBlaWdlbnZhbHVlcyA+IDEgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZCA+IDUlCmVmYV9kMl9hbGxfdW5yb3RhdGVkX25mYWN0b3JzIDwtIGVmYV9kMl9hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzICU+JQogIGZpbHRlcihTUy5sb2FkaW5ncyA+IDEsIFByb3BvcnRpb24uRXhwbGFpbmVkID4gMC4wNSkgJT4lCiAgY291bnQoKSAlPiUKICBhcy5udW1lcmljKCkKZWZhX2QyX2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMKYGBgCgpgYGB7ciBzMiBhbGwgcm90YXRpb259CmVmYV9kMl9hbGxfcm90YXRlZCA8LSBmYShkMl9hbGwsIGVmYV9kMl9hbGxfdW5yb3RhdGVkX25mYWN0b3JzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKIyBjaGVjayB0aGF0IGVhY2ggb2YgdGhlc2UgZmFjdG9ycyBpcyB0aGUgZG9taW5hbnQgZmFjdG9yIGZvciBhdCBsZWFzdCBvbmUgbWVudGFsIGNhcGFjaXR5IGl0ZW0KZWZhX2QyX2FsbF9yb3RhdGVkX2xvYWRpbmdzIDwtIGZhLnNvcnQobG9hZGluZ3MoZWZhX2QyX2FsbF9yb3RhdGVkKVtdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIGdhdGhlcihmYWN0b3IsIGxvYWRpbmcsIC1jYXBhY2l0eSkgJT4lCiAgbXV0YXRlKGxvYWRpbmdfYWJzID0gYWJzKGxvYWRpbmcpKSAlPiUKICBncm91cF9ieShjYXBhY2l0eSkgJT4lCiAgdG9wX24oMSwgbG9hZGluZ19hYnMpICU+JQogIHVuZ3JvdXAoKQplZmFfZDJfYWxsX3JvdGF0ZWRfbG9hZGluZ3MKCiMgZHJvcCBhbnkgZmFjdG9ycyB3aGVyZSBuIDwgMQplZmFfZDJfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkKCiMgc2V0IG51bWJlciBvZiBmYWN0b3JzIHRvIGV4dHJhY3QKbmZhY3RvcnNfZDJfYWxsIDwtIGVmYV9kMl9hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKSAlPiUKICBucm93KCkKbmZhY3RvcnNfZDJfYWxsCmBgYAoKIyMjIFN0ZXAgMjogUnVuIEVGQSB3aXRoIHZhcmltYXggcm90YXRpb24KCmBgYHtyIHMyIGFsbCB2YXJpbWF4IHJvdGF0aW9ufQojIHJ1biBFRkEgd2l0aCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDJfYWxsX3JvdGF0ZWROIDwtIGZhKGQyX2FsbCwgbmZhY3RvcnNfZDJfYWxsLCAKICAgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLCBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQpwcmludChlZmFfZDJfYWxsX3JvdGF0ZWROKQoKIyBnZXQgbG9hZGluZ3MgZm9yIGVhY2ggZmFjdG9yCmVmYV9kMl9hbGxfcm90YXRlZE5fbG9hZGluZ3MgPC0gbG9hZGluZ3MoZWZhX2QyX2FsbF9yb3RhdGVkTilbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lIAogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAibWMiKQpgYGAKCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0Ij48YSBocmVmPSIjaGVhZGVyIj5iYWNrIHRvIFRPQzwvYT48L3A+CgojIyMjIEZhY3RvciBsb2FkaW5ncyB0YWJsZQoKYGBge3IgczIgbG9hZGluZ3MgdGFibGV9CmRhdGEuZnJhbWUobG9hZGluZ3MoZmEuc29ydChlZmFfZDJfYWxsX3JvdGF0ZWROKSlbXSkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIG11dGF0ZV9hdCh2YXJzKHN0YXJ0c193aXRoKCJNIikpLCBmdW5zKHJvdW5kMikpCmBgYAoKIyBTdHVkeSAzIAoKRGVzaWduOiAyIGNvbmRpdGlvbnMgKGJlZXRsZSwgcm9ib3QpLCB3aXRoaW4tc3ViamVjdHMKRGF0ZSBjb25kdWN0ZWQ6IDIwMTYtMDEtMTAKCiMjIERlbW9ncmFwaGljcwoKYGBge3IgczMgZGVtb2dyYXBoaWNzfQojIGV4YW1pbmUgZXhjbHVzaW9uCmV4Y2x1ZGVkQ291bnRzKCJzdHVkeSAzIikKCiMgbWFrZSBkZW1vZ3JhcGhpY3MgdGFibGVzCmRlbW9TYW1wbGVTaXplKCJzdHVkeSAzIikKZGVtb0R1cmF0aW9uKCJzdHVkeSAzIikKZGVtb0FnZSgic3R1ZHkgMyIpCmRlbW9HZW5kZXIoInN0dWR5IDMiKQpkZW1vUmFjZSgic3R1ZHkgMyIpCmRlbW9SZWxpZ2lvbigic3R1ZHkgMyIpCmBgYAoKPHAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQiPjxhIGhyZWY9IiNoZWFkZXIiPmJhY2sgdG8gVE9DPC9hPjwvcD4KCiMjIEV4cGxvcmF0b3J5IGZhY3RvciBhbmFseXNpcwoKIyMjIFN0ZXAgMTogUnVuIG1heGltYWwgRUZBICh3aXRob3V0IGFuZCB3aXRoIHJvdGF0aW9uKQoKYGBge3IgczMgYWxsIG5vIHJvdGF0aW9ufQojIGV4YW1pbmUgc2NyZWUgcGxvdApmYS5wYXJhbGxlbChkM19hbGwpCgojIHJ1biBFRkEgd2l0aG91dCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDNfYWxsX3Vucm90YXRlZCA8LSBmYShkM19hbGwsIDEzLCByb3RhdGUgPSAibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvciA9IGNob3NlbkNvclR5cGUsIGZtID0gIm1pbnJlcyIpCnByaW50KGVmYV9kM19hbGxfdW5yb3RhdGVkKQoKIyBleGFtaW5lIGVpZ2VudmFsdWVzIGFuZCB2YXJpYW5jZSBleHBsYWluZWQKZWZhX2QzX2FsbF91bnJvdGF0ZWRfZWlnZW52YWx1ZXMgPC0gcHJpbnQoZWZhX2QzX2FsbF91bnJvdGF0ZWQpJFZhY2NvdW50ZWQgJT4lCiAgdCgpICU+JQogIGRhdGEuZnJhbWUoKQoKIyBjb3VudCBmYWN0b3JzIHdpdGggZWlnZW52YWx1ZXMgPiAxIGFuZCB2YXJpYW5jZSBleHBsYWluZWQgPiA1JQplZmFfZDNfYWxsX3Vucm90YXRlZF9uZmFjdG9ycyA8LSBlZmFfZDNfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyAlPiUKICBmaWx0ZXIoU1MubG9hZGluZ3MgPiAxLCBQcm9wb3J0aW9uLkV4cGxhaW5lZCA+IDAuMDUpICU+JQogIGNvdW50KCkgJT4lCiAgYXMubnVtZXJpYygpCmVmYV9kM19hbGxfdW5yb3RhdGVkX25mYWN0b3JzCmBgYAoKYGBge3IgczMgYWxsIHJvdGF0aW9ufQplZmFfZDNfYWxsX3JvdGF0ZWQgPC0gZmEoZDNfYWxsLCBlZmFfZDNfYWxsX3Vucm90YXRlZF9uZmFjdG9ycywgcm90YXRlID0gY2hvc2VuUm90VHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKCiMgY2hlY2sgdGhhdCBlYWNoIG9mIHRoZXNlIGZhY3RvcnMgaXMgdGhlIGRvbWluYW50IGZhY3RvciBmb3IgYXQgbGVhc3Qgb25lIG1lbnRhbCBjYXBhY2l0eSBpdGVtCmVmYV9kM19hbGxfcm90YXRlZF9sb2FkaW5ncyA8LSBmYS5zb3J0KGxvYWRpbmdzKGVmYV9kM19hbGxfcm90YXRlZClbXSkgJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBnYXRoZXIoZmFjdG9yLCBsb2FkaW5nLCAtY2FwYWNpdHkpICU+JQogIG11dGF0ZShsb2FkaW5nX2FicyA9IGFicyhsb2FkaW5nKSkgJT4lCiAgZ3JvdXBfYnkoY2FwYWNpdHkpICU+JQogIHRvcF9uKDEsIGxvYWRpbmdfYWJzKSAlPiUKICB1bmdyb3VwKCkKZWZhX2QzX2FsbF9yb3RhdGVkX2xvYWRpbmdzCgojIGRyb3AgYW55IGZhY3RvcnMgd2hlcmUgbiA8IDEKZWZhX2QzX2FsbF9yb3RhdGVkX2xvYWRpbmdzICU+JSAKICBjb3VudChmYWN0b3IpICU+JSAKICBmaWx0ZXIobiA+IDApCgojIHNldCBudW1iZXIgb2YgZmFjdG9ycyB0byBleHRyYWN0Cm5mYWN0b3JzX2QzX2FsbCA8LSBlZmFfZDNfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkgJT4lCiAgbnJvdygpCm5mYWN0b3JzX2QzX2FsbApgYGAKCiMjIyBTdGVwIDI6IFJ1biBFRkEgd2l0aCB2YXJpbWF4IHJvdGF0aW9uCgpgYGB7ciBzMyBhbGwgdmFyaW1heCByb3RhdGlvbn0KIyBydW4gRUZBIHdpdGggcm90YXRpb24gd2l0aCBOIGZhY3RvcnMKZWZhX2QzX2FsbF9yb3RhdGVkTiA8LSBmYShkM19hbGwsIG5mYWN0b3JzX2QzX2FsbCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2QzX2FsbF9yb3RhdGVkTikKCiMgZ2V0IGxvYWRpbmdzIGZvciBlYWNoIGZhY3RvcgplZmFfZDNfYWxsX3JvdGF0ZWROX2xvYWRpbmdzIDwtIGxvYWRpbmdzKGVmYV9kM19hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JSAKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIm1jIikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyMjIyBGYWN0b3IgbG9hZGluZ3MgdGFibGUKCmBgYHtyIHMzIGxvYWRpbmdzIHRhYmxlfQpkYXRhLmZyYW1lKGxvYWRpbmdzKGZhLnNvcnQoZWZhX2QzX2FsbF9yb3RhdGVkTikpW10pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiTSIpKSwgZnVucyhyb3VuZDIpKQpgYGAKCiMgU3R1ZHkgNAoKRGVzaWduOiAyMSBjb25kaXRpb25zLCBiZXR3ZWVuLXN1YmplY3RzCkRhdGUgY29uZHVjdGVkOiAyMDE2LTAxLTE0CgojIyBEZW1vZ3JhcGhpY3MKCmBgYHtyIHM0IGRlbW9ncmFwaGljc30KIyBleGFtaW5lIGV4Y2x1c2lvbgpleGNsdWRlZENvdW50cygic3R1ZHkgNCIpCgojIG1ha2UgZGVtb2dyYXBoaWNzIHRhYmxlcwpkZW1vU2FtcGxlU2l6ZSgic3R1ZHkgNCIpCmRlbW9EdXJhdGlvbigic3R1ZHkgNCIpCmRlbW9BZ2UoInN0dWR5IDQiKQpkZW1vR2VuZGVyKCJzdHVkeSA0IikKZGVtb1JhY2UoInN0dWR5IDQiKQpkZW1vRWR1Y2F0aW9uKCJzdHVkeSA0IikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyMgRXhwbG9yYXRvcnkgZmFjdG9yIGFuYWx5c2lzCgojIyMgU3RlcCAxOiBSdW4gbWF4aW1hbCBFRkEgKHdpdGhvdXQgYW5kIHdpdGggcm90YXRpb24pCgpgYGB7ciBzNCBhbGwgbm8gcm90YXRpb259CiMgZXhhbWluZSBzY3JlZSBwbG90CmZhLnBhcmFsbGVsKGQ0X2FsbCkKCiMgcnVuIEVGQSB3aXRob3V0IHJvdGF0aW9uIHdpdGggTiBmYWN0b3JzCmVmYV9kNF9hbGxfdW5yb3RhdGVkIDwtIGZhKGQ0X2FsbCwgMTMsIHJvdGF0ZSA9ICJub25lIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2Q0X2FsbF91bnJvdGF0ZWQpCgojIGV4YW1pbmUgZWlnZW52YWx1ZXMgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZAplZmFfZDRfYWxsX3Vucm90YXRlZF9laWdlbnZhbHVlcyA8LSBwcmludChlZmFfZDRfYWxsX3Vucm90YXRlZCkkVmFjY291bnRlZCAlPiUKICB0KCkgJT4lCiAgZGF0YS5mcmFtZSgpCgojIGNvdW50IGZhY3RvcnMgd2l0aCBlaWdlbnZhbHVlcyA+IDEgYW5kIHZhcmlhbmNlIGV4cGxhaW5lZCA+IDUlCmVmYV9kNF9hbGxfdW5yb3RhdGVkX25mYWN0b3JzIDwtIGVmYV9kNF9hbGxfdW5yb3RhdGVkX2VpZ2VudmFsdWVzICU+JQogIGZpbHRlcihTUy5sb2FkaW5ncyA+IDEsIFByb3BvcnRpb24uRXhwbGFpbmVkID4gMC4wNSkgJT4lCiAgY291bnQoKSAlPiUKICBhcy5udW1lcmljKCkKZWZhX2Q0X2FsbF91bnJvdGF0ZWRfbmZhY3RvcnMKYGBgCgpgYGB7ciBzNCBhbGwgcm90YXRpb259CmVmYV9kNF9hbGxfcm90YXRlZCA8LSBmYShkNF9hbGwsIGVmYV9kNF9hbGxfdW5yb3RhdGVkX25mYWN0b3JzLCByb3RhdGUgPSBjaG9zZW5Sb3RUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb3IgPSBjaG9zZW5Db3JUeXBlLCBmbSA9ICJtaW5yZXMiKQoKIyBjaGVjayB0aGF0IGVhY2ggb2YgdGhlc2UgZmFjdG9ycyBpcyB0aGUgZG9taW5hbnQgZmFjdG9yIGZvciBhdCBsZWFzdCBvbmUgbWVudGFsIGNhcGFjaXR5IGl0ZW0KZWZhX2Q0X2FsbF9yb3RhdGVkX2xvYWRpbmdzIDwtIGZhLnNvcnQobG9hZGluZ3MoZWZhX2Q0X2FsbF9yb3RhdGVkKVtdKSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKCJjYXBhY2l0eSIpICU+JQogIGdhdGhlcihmYWN0b3IsIGxvYWRpbmcsIC1jYXBhY2l0eSkgJT4lCiAgbXV0YXRlKGxvYWRpbmdfYWJzID0gYWJzKGxvYWRpbmcpKSAlPiUKICBncm91cF9ieShjYXBhY2l0eSkgJT4lCiAgdG9wX24oMSwgbG9hZGluZ19hYnMpICU+JQogIHVuZ3JvdXAoKQplZmFfZDRfYWxsX3JvdGF0ZWRfbG9hZGluZ3MKCiMgZHJvcCBhbnkgZmFjdG9ycyB3aGVyZSBuIDwgMQplZmFfZDRfYWxsX3JvdGF0ZWRfbG9hZGluZ3MgJT4lIAogIGNvdW50KGZhY3RvcikgJT4lIAogIGZpbHRlcihuID4gMCkKCiMgc2V0IG51bWJlciBvZiBmYWN0b3JzIHRvIGV4dHJhY3QKbmZhY3RvcnNfZDRfYWxsIDwtIGVmYV9kNF9hbGxfcm90YXRlZF9sb2FkaW5ncyAlPiUgCiAgY291bnQoZmFjdG9yKSAlPiUgCiAgZmlsdGVyKG4gPiAwKSAlPiUKICBucm93KCkKbmZhY3RvcnNfZDRfYWxsCmBgYAoKIyMjIFN0ZXAgMjogUnVuIEVGQSB3aXRoIHZhcmltYXggcm90YXRpb24KCmBgYHtyIHM0IGFsbCB2YXJpbWF4IHJvdGF0aW9ufQojIHJ1biBFRkEgd2l0aCByb3RhdGlvbiB3aXRoIE4gZmFjdG9ycwplZmFfZDRfYWxsX3JvdGF0ZWROIDwtIGZhKGQ0X2FsbCwgNCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRlID0gY2hvc2VuUm90VHlwZSwgY29yID0gY2hvc2VuQ29yVHlwZSwgZm0gPSAibWlucmVzIikKcHJpbnQoZWZhX2Q0X2FsbF9yb3RhdGVkTikKCiMgZ2V0IGxvYWRpbmdzIGZvciBlYWNoIGZhY3RvcgplZmFfZDRfYWxsX3JvdGF0ZWROX2xvYWRpbmdzIDwtIGxvYWRpbmdzKGVmYV9kNF9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JSAKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIm1jIikKYGBgCgo8cCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+PGEgaHJlZj0iI2hlYWRlciI+YmFjayB0byBUT0M8L2E+PC9wPgoKIyMjIyBGYWN0b3IgbG9hZGluZ3MgdGFibGUKCmBgYHtyIHM0IGxvYWRpbmdzIHRhYmxlfQpkYXRhLmZyYW1lKGxvYWRpbmdzKGZhLnNvcnQoZWZhX2Q0X2FsbF9yb3RhdGVkTikpW10pICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbigiY2FwYWNpdHkiKSAlPiUKICBtdXRhdGVfYXQodmFycyhzdGFydHNfd2l0aCgiTSIpKSwgZnVucyhyb3VuZDIpKQpgYGAKCiMgQmlnIGZhY3RvciBsb2FkaW5ncyB0YWJsZSBmb3IgYWxsIHN0dWRpZXMgKFN0dWRpZXMgMS00KQoKYGBge3IgYWxsIHN0dWRpZXMgbG9hZGluZ3MgdGFibGV9Cm9yZGVyX3MxIDwtIGxvYWRpbmdzKGZhLnNvcnQoZWZhX2QxX2FsbF9yb3RhdGVkTikpW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAibWMiKSAlPiUKICByb3duYW1lc190b19jb2x1bW4odmFyID0gIm9yZGVyMSIpICU+JQogIHJlbmFtZShzMV9NUjIgPSBNUjIsIHMxX01SMSA9IE1SMSwgczFfTVIzID0gTVIzKQoKb3JkZXJfczIgPC0gbG9hZGluZ3MoZmEuc29ydChlZmFfZDJfYWxsX3JvdGF0ZWROKSlbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJtYyIpICU+JQogIHJlbmFtZShzMl9NUjIgPSBNUjIsIHMyX01SMSA9IE1SMSwgczJfTVIzID0gTVIzKQoKb3JkZXJfczMgPC0gbG9hZGluZ3MoZmEuc29ydChlZmFfZDNfYWxsX3JvdGF0ZWROKSlbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJtYyIpICU+JQogIHJlbmFtZShzM19NUjIgPSBNUjIsIHMzX01SMSA9IE1SMSwgczNfTVIzID0gTVIzKQoKb3JkZXJfczQgPC0gbG9hZGluZ3MoZmEuc29ydChlZmFfZDRfYWxsX3JvdGF0ZWROKSlbXSAlPiUKICBkYXRhLmZyYW1lKCkgJT4lCiAgcm93bmFtZXNfdG9fY29sdW1uKHZhciA9ICJtYyIpICU+JQogIHJlbmFtZShzNF9NUjIgPSBNUjIsIHM0X01SMSA9IE1SMSwgczRfTVIzID0gTVIzKQoKYmlnVGFibGUgPC0gb3JkZXJfczEgJT4lCiAgZnVsbF9qb2luKG9yZGVyX3MyKSAlPiUKICBmdWxsX2pvaW4ob3JkZXJfczMpICU+JQogIGZ1bGxfam9pbihvcmRlcl9zNCkgJT4lCiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoInMiKSksIGZ1bnMocm91bmQyKSkgJT4lCiAgc2VsZWN0KG9yZGVyMSwgbWMsIGVuZHNfd2l0aCgiTVIxIiksIGVuZHNfd2l0aCgiTVIyIiksIGVuZHNfd2l0aCgiTVIzIikpCgpiaWdUYWJsZQpgYGAKCiMgRmlndXJlcwoKYGBge3IgcGxvdHRpbmcgc2V0dXAgY2hhcmFjdGVyIG1lYW5zfQojIGJvb3RzdHJhcCA5NSUgQ0lzIGZvciByYXRpbmdzIGJ5IGNoYXJhY3RlciAobm9ucGFyYW1ldHJpYykKIyBzdHVkeSAxCmNoYXJfcGxvdHRpbmdfcmF0aW5nc19zMSA8LSBkMSAlPiUgCiAgc2VsZWN0KGNvbmRpdGlvbiwgc3ViaWQsIGhhcHB5OnByaWRlKSAlPiUKICBnYXRoZXIobWMsIHJlc3BvbnNlLCAtc3ViaWQsIC1jb25kaXRpb24pICU+JQogIG11dGF0ZShyZXNwb25zZSA9IGFzLm51bWVyaWMocmVzcG9uc2UpKSAlPiUKICBtdWx0aV9ib290KGNvbHVtbiA9ICJyZXNwb25zZSIsCiAgICAgICAgICAgICBzdW1tYXJ5X2Z1bmN0aW9uID0gIm1lYW4iLAogICAgICAgICAgICAgc3VtbWFyeV9ncm91cHMgPSBjKCJjb25kaXRpb24iLCAibWMiKSwKICAgICAgICAgICAgIHN0YXRpc3RpY3NfZnVuY3Rpb25zID0gYygiY2lfbG93ZXIiLCAibWVhbiIsICJjaV91cHBlciIpKSAlPiUKICBmdWxsX2pvaW4oZGVtb1NhbXBsZVNpemUoInN0dWR5IDEiKSAlPiUgZmlsdGVyKGNvbmRpdGlvbiAhPSAiYWxsIikpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAxIikKCiMgc3R1ZHkgMgpjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczIgPC0gZDIgJT4lIAogIHNlbGVjdChjb25kaXRpb24sIHN1YmlkLCBoYXBweTpwcmlkZSkgJT4lCiAgZ2F0aGVyKG1jLCByZXNwb25zZSwgLXN1YmlkLCAtY29uZGl0aW9uKSAlPiUKICBtdXRhdGUocmVzcG9uc2UgPSBhcy5udW1lcmljKHJlc3BvbnNlKSkgJT4lCiAgbXVsdGlfYm9vdChjb2x1bW4gPSAicmVzcG9uc2UiLAogICAgICAgICAgICAgc3VtbWFyeV9mdW5jdGlvbiA9ICJtZWFuIiwKICAgICAgICAgICAgIHN1bW1hcnlfZ3JvdXBzID0gYygiY29uZGl0aW9uIiwgIm1jIiksCiAgICAgICAgICAgICBzdGF0aXN0aWNzX2Z1bmN0aW9ucyA9IGMoImNpX2xvd2VyIiwgIm1lYW4iLCAiY2lfdXBwZXIiKSkgJT4lCiAgZnVsbF9qb2luKGRlbW9TYW1wbGVTaXplKCJzdHVkeSAyIikgJT4lIGZpbHRlcihjb25kaXRpb24gIT0gImFsbCIpKSAlPiUKICBtdXRhdGUoc3R1ZHkgPSAic3R1ZHkgMiIpCgoKIyBzdHVkeSAzCmNoYXJfcGxvdHRpbmdfcmF0aW5nc19zMyA8LSBkMyAlPiUgCiAgc2VsZWN0KHRhcmdldCwgc3ViaWQsIGhhcHB5OnByaWRlKSAlPiUKICByZW5hbWUoY29uZGl0aW9uID0gdGFyZ2V0KSAlPiUKICBnYXRoZXIobWMsIHJlc3BvbnNlLCAtc3ViaWQsIC1jb25kaXRpb24pICU+JQogIG11dGF0ZShyZXNwb25zZSA9IGFzLm51bWVyaWMocmVzcG9uc2UpKSAlPiUKICBtdWx0aV9ib290KGNvbHVtbiA9ICJyZXNwb25zZSIsCiAgICAgICAgICAgICBzdW1tYXJ5X2Z1bmN0aW9uID0gIm1lYW4iLAogICAgICAgICAgICAgc3VtbWFyeV9ncm91cHMgPSBjKCJjb25kaXRpb24iLCAibWMiKSwKICAgICAgICAgICAgIHN0YXRpc3RpY3NfZnVuY3Rpb25zID0gYygiY2lfbG93ZXIiLCAibWVhbiIsICJjaV91cHBlciIpKSAlPiUKICBmdWxsX2pvaW4oZGVtb1NhbXBsZVNpemUoInN0dWR5IDMiKSAlPiUgZmlsdGVyKGNvbmRpdGlvbiAhPSAiYWxsIikpICU+JQogIG11dGF0ZShzdHVkeSA9ICJzdHVkeSAzIikKCiMgc3R1ZHkgNApjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfczQgPC0gZDQgJT4lIAogIHNlbGVjdChjb25kaXRpb24sIHN1YmlkLCBoYXBweTpwcmlkZSkgJT4lCiAgZ2F0aGVyKG1jLCByZXNwb25zZSwgLXN1YmlkLCAtY29uZGl0aW9uKSAlPiUKICBtdXRhdGUocmVzcG9uc2UgPSBhcy5udW1lcmljKHJlc3BvbnNlKSkgJT4lCiAgbXVsdGlfYm9vdChjb2x1bW4gPSAicmVzcG9uc2UiLAogICAgICAgICAgICAgc3VtbWFyeV9mdW5jdGlvbiA9ICJtZWFuIiwKICAgICAgICAgICAgIHN1bW1hcnlfZ3JvdXBzID0gYygiY29uZGl0aW9uIiwgIm1jIiksCiAgICAgICAgICAgICBzdGF0aXN0aWNzX2Z1bmN0aW9ucyA9IGMoImNpX2xvd2VyIiwgIm1lYW4iLCAiY2lfdXBwZXIiKSkgJT4lCiAgZnVsbF9qb2luKGRlbW9TYW1wbGVTaXplKCJzdHVkeSA0IikgJT4lIGZpbHRlcihjb25kaXRpb24gIT0gImFsbCIpKSAlPiUKICBtdXRhdGUoc3R1ZHkgPSAic3R1ZHkgNCIpCmBgYAoKYGBge3IgcGxvdHRpbmcgc2V0dXAgY2hhcmFjdGVyIG1lYW5zIG1lcmdlfQpjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfYWxsIDwtIGNoYXJfcGxvdHRpbmdfcmF0aW5nc19zMSAlPiUKICBmdWxsX2pvaW4oY2hhcl9wbG90dGluZ19yYXRpbmdzX3MyKSAlPiUKICBmdWxsX2pvaW4oY2hhcl9wbG90dGluZ19yYXRpbmdzX3MzKSAlPiUKICBmdWxsX2pvaW4oY2hhcl9wbG90dGluZ19yYXRpbmdzX3M0KSAlPiUKICB1bmdyb3VwKCkgJT4lCiAgbXV0YXRlKHN0dWR5ID0gZmFjdG9yKHN0dWR5KSwKICAgICAgICAgY29uZGl0aW9uID0gZmFjdG9yKGNvbmRpdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoInN0YXBsZXIiLCAiY2FyIiwgImNvbXB1dGVyIiwgInJvYm90IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmUiLCAiYmVldGxlIiwgImZpc2giLCAiYmx1ZWpheSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmcm9nIiwgIm1vdXNlIiwgImdvYXQiLCAiZG9nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJlYXIiLCAiZG9scGhpbiIsICJlbGVwaGFudCIsICJjaGltcCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmZXR1cyIsICJwdnMiLCAiaW5mYW50IiwgImNoaWxkIiwgImFkdWx0IikpKQpgYGAKCmBgYHtyIHBsb3R0aW5nIHNldHVwIGNhcGFjaXR5IHdvcmRpbmdzfQpjaGFyX3Bsb3R0aW5nX3dvcmRpbmdzIDwtIGNoYXJfcGxvdHRpbmdfcmF0aW5nc19hbGwgJT4lCiAgdW5ncm91cCgpICU+JQogIHNlbGVjdChtYykgJT4lCiAgZGlzdGluY3QoKSAlPiUgCiAgbXV0YXRlKHdvcmRpbmcgPSBmYWN0b3IoCiAgICByZWNvZGUobWMsCiAgICAgICAgICAgaHVuZ3J5ID0gImdldHRpbmcgaHVuZ3J5IiwgcGFpbiA9ICJleHBlcmllbmNpbmcgcGFpbiIsCiAgICAgICAgICAgdGlyZWQgPSAiZmVlbGluZyB0aXJlZCIsIGZlYXIgPSAiZXhwZXJpZW5jaW5nIGZlYXIiLAogICAgICAgICAgIGNvbXB1dGF0aW9ucyA9ICJkb2luZyBjb21wdXRhdGlvbnMiLCBwbGVhc3VyZSA9ICJleHBlcmllbmNpbmcgcGxlYXN1cmUiLAogICAgICAgICAgIGNvbnNjaW91cyA9ICJiZWluZyBjb25zY2lvdXMiLCBmcmVlX3dpbGwgPSAiaGF2aW5nIGZyZWUgd2lsbCIsCiAgICAgICAgICAgc2FmZSA9ICJmZWVsaW5nIHNhZmUiLCBkZXNpcmVzID0gImhhdmluZyBkZXNpcmVzIiwKICAgICAgICAgICBjYWxtID0gImZlZWxpbmcgY2FsbSIsIG5hdXNlYXRlZCA9ICJmZWVsaW5nIG5hdXNlYXRlZCIsCiAgICAgICAgICAgYW5ncnkgPSAiZ2V0dGluZyBhbmdyeSIsIGludGVudGlvbnMgPSAiaGF2aW5nIGludGVudGlvbnMiLAogICAgICAgICAgIHNlbGZfYXdhcmUgPSAiYmVpbmcgc2VsZi1hd2FyZSIsIG9kb3JzID0gImRldGVjdGluZyBvZG9ycyIsCiAgICAgICAgICAgZW1iYXJyYXNzZWQgPSAiZmVlbGluZyBlbWJhcnJhc3NlZCIsIHByaWRlID0gImV4cGVyaWVuY2luZyBwcmlkZSIsCiAgICAgICAgICAgbG92ZSA9ICJmZWVsaW5nIGxvdmUiLCBndWlsdCA9ICJleHBlcmllbmNpbmcgZ3VpbHQiLAogICAgICAgICAgIGRlcHJlc3NlZCA9ICJmZWVsaW5nIGRlcHJlc3NlZCIsIGRpc3Jlc3BlY3RlZCA9ICJmZWVsaW5nIGRpc3Jlc3BlY3RlZCIsCiAgICAgICAgICAgYmVsaWVmcyA9ICJob2xkaW5nIGJlbGllZnMiLCBlbW9fcmVjb2cgPSAidW5kZXJzdGFuZGluZyAuLi4gZmVlbGluZyIsCiAgICAgICAgICAgam95ID0gImV4cGVyaWVuY2luZyBqb3kiLCBwZXJzb25hbGl0eSA9ICJoYXZpbmcgYSBwZXJzb25hbGl0eSIsCiAgICAgICAgICAgaGFwcHkgPSAiZmVlbGluZyBoYXBweSIsIG1vcmFsaXR5ID0gInRlbGxpbmcgcmlnaHQgZnJvbSB3cm9uZyIsCiAgICAgICAgICAgdGhvdWdodHMgPSAiaGF2aW5nIHRob3VnaHRzIiwgc2VsZl9yZXN0cmFpbnQgPSAiZXhlcmNpc2luZyBzZWxmLXJlc3RyYWludCIsCiAgICAgICAgICAgcmVtZW1iZXJpbmcgPSAicmVtZW1iZXJpbmcgdGhpbmdzIiwgcmVjb2duaXppbmcgPSAicmVjb2duaXppbmcgb3RoZXJzIiwKICAgICAgICAgICB0ZW1wZXJhdHVyZSA9ICJzZW5zaW5nIHRlbXBlcmF0dXJlcyIsIGNvbW11bmljYXRpbmcgPSAiY29tbXVuaWNhdGluZyAuLi4iLAogICAgICAgICAgIGdvYWwgPSAid29ya2luZyB0b3dhcmQgYSBnb2FsIiwgZGVwdGggPSAicGVyY2VpdmluZyBkZXB0aCIsCiAgICAgICAgICAgc291bmRzID0gImRldGVjdGluZyBzb3VuZHMiLCBzZWVpbmcgPSAic2VlaW5nIHRoaW5ncyIsCiAgICAgICAgICAgY2hvaWNlcyA9ICJtYWtpbmcgY2hvaWNlcyIsIHJlYXNvbmluZyA9ICJyZWFzb25pbmcgYWJvdXQgdGhpbmdzIikpKQpgYGAKCgpgYGB7ciBwbG90dGluZyBzZXR1cCBsb2FkaW5nc30KIyBtZXJnZSB3aXRoIGxvYWRpbmdzLCBvcmRlcmluZ3MsIGFuZCBkb21pbmFudCBmYWN0b3JzIGZyb20gZWFjaCBzdHVkeSAKY2hhcl9wbG90dGluZyA8LSBjaGFyX3Bsb3R0aW5nX3JhdGluZ3NfYWxsICU+JQogIGZ1bGxfam9pbihjaGFyX3Bsb3R0aW5nX3dvcmRpbmdzKSAlPiUKICBmdWxsX2pvaW4ob3JkZXJfczEgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKHMxX01SMV9hYnMgPSBhYnMoczFfTVIxKSwKICAgICAgICAgICAgICAgICAgICAgczFfTVIyX2FicyA9IGFicyhzMV9NUjIpLAogICAgICAgICAgICAgICAgICAgICBzMV9NUjNfYWJzID0gYWJzKHMxX01SMyksCiAgICAgICAgICAgICAgICAgICAgIHMxX2ZhY3RvciA9IAogICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzMV9NUjFfYWJzID4gczFfTVIyX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfTVIxX2FicyA+IHMxX01SM19hYnMsICJCT0RZIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHMxX01SMl9hYnMgPiBzMV9NUjFfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfTVIyX2FicyA+IHMxX01SM19hYnMsICJIRUFSVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczFfTVIzX2FicyA+IHMxX01SMV9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczFfTVIzX2FicyA+IHMxX01SMl9hYnMsICJNSU5EIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSwKICAgICAgICAgICAgICAgICAgICAgczFfY29sb3IgPSByZWNvZGUoczFfZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQk9EWSIgPSAiIzM3N0VCOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCIgPSAiIzREQUY0QSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSU5EIiA9ICIjRTQxQTFDIiksCiAgICAgICAgICAgICAgICAgICAgIHMxX29yZGVyID0gYXMubnVtZXJpYyhvcmRlcjEpKSAlPiUKICAgICAgICAgICAgICBzZWxlY3QoLXMxX01SMV9hYnMsIC1zMV9NUjJfYWJzLCAtczFfTVIzX2FicykpICU+JQogIGZ1bGxfam9pbihvcmRlcl9zMiAlPiUKICAgICAgICAgICAgICBkYXRhLmZyYW1lKCkgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKHMyX01SMV9hYnMgPSBhYnMoczJfTVIxKSwKICAgICAgICAgICAgICAgICAgICAgczJfTVIyX2FicyA9IGFicyhzMl9NUjIpLAogICAgICAgICAgICAgICAgICAgICBzMl9NUjNfYWJzID0gYWJzKHMyX01SMyksCiAgICAgICAgICAgICAgICAgICAgIHMyX2ZhY3RvciA9IAogICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzMl9NUjFfYWJzID4gczJfTVIyX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczJfTVIxX2FicyA+IHMyX01SM19hYnMsICJCT0RZIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHMyX01SMl9hYnMgPiBzMl9NUjFfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczJfTVIyX2FicyA+IHMyX01SM19hYnMsICJIRUFSVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczJfTVIzX2FicyA+IHMyX01SMV9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczJfTVIzX2FicyA+IHMyX01SMl9hYnMsICJNSU5EIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSwKICAgICAgICAgICAgICAgICAgICAgczJfY29sb3IgPSByZWNvZGUoczJfZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQk9EWSIgPSAiIzM3N0VCOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCIgPSAiIzREQUY0QSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSU5EIiA9ICIjRTQxQTFDIikpICU+JQogICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiczJfb3JkZXIiKSAlPiUKICAgICAgICAgICAgICBtdXRhdGUoczJfb3JkZXIgPSBhcy5udW1lcmljKHMyX29yZGVyKSkgJT4lCiAgICAgICAgICAgICAgc2VsZWN0KC1zMl9NUjFfYWJzLCAtczJfTVIyX2FicywgLXMyX01SM19hYnMpKSAlPiUKICBmdWxsX2pvaW4ob3JkZXJfczMgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKHMzX01SMV9hYnMgPSBhYnMoczNfTVIxKSwKICAgICAgICAgICAgICAgICAgICAgczNfTVIyX2FicyA9IGFicyhzM19NUjIpLAogICAgICAgICAgICAgICAgICAgICBzM19NUjNfYWJzID0gYWJzKHMzX01SMyksCiAgICAgICAgICAgICAgICAgICAgIHMzX2ZhY3RvciA9IAogICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzM19NUjFfYWJzID4gczNfTVIyX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczNfTVIxX2FicyA+IHMzX01SM19hYnMsICJCT0RZIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHMzX01SMl9hYnMgPiBzM19NUjFfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczNfTVIyX2FicyA+IHMzX01SM19hYnMsICJIRUFSVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczNfTVIzX2FicyA+IHMzX01SMV9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczNfTVIzX2FicyA+IHMzX01SMl9hYnMsICJNSU5EIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSwKICAgICAgICAgICAgICAgICAgICAgczNfY29sb3IgPSByZWNvZGUoczNfZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQk9EWSIgPSAiIzM3N0VCOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCIgPSAiIzREQUY0QSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSU5EIiA9ICIjRTQxQTFDIikpICU+JQogICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiczNfb3JkZXIiKSAlPiUKICAgICAgICAgICAgICBtdXRhdGUoczNfb3JkZXIgPSBhcy5udW1lcmljKHMzX29yZGVyKSkgJT4lCiAgICAgICAgICAgICAgc2VsZWN0KC1zM19NUjFfYWJzLCAtczNfTVIyX2FicywgLXMzX01SM19hYnMpKSAlPiUKICBmdWxsX2pvaW4ob3JkZXJfczQgJT4lCiAgICAgICAgICAgICAgbXV0YXRlKHM0X01SMV9hYnMgPSBhYnMoczRfTVIxKSwKICAgICAgICAgICAgICAgICAgICAgczRfTVIyX2FicyA9IGFicyhzNF9NUjIpLAogICAgICAgICAgICAgICAgICAgICBzNF9NUjNfYWJzID0gYWJzKHM0X01SMyksCiAgICAgICAgICAgICAgICAgICAgIHM0X2ZhY3RvciA9IAogICAgICAgICAgICAgICAgICAgICAgIGlmZWxzZShzNF9NUjFfYWJzID4gczRfTVIyX2FicyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczRfTVIxX2FicyA+IHM0X01SM19hYnMsICJCT0RZIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHM0X01SMl9hYnMgPiBzNF9NUjFfYWJzICYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczRfTVIyX2FicyA+IHM0X01SM19hYnMsICJIRUFSVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UoczRfTVIzX2FicyA+IHM0X01SMV9hYnMgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczRfTVIzX2FicyA+IHM0X01SMl9hYnMsICJNSU5EIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSwKICAgICAgICAgICAgICAgICAgICAgczRfY29sb3IgPSByZWNvZGUoczRfZmFjdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQk9EWSIgPSAiIzM3N0VCOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIRUFSVCIgPSAiIzREQUY0QSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNSU5EIiA9ICIjRTQxQTFDIikpICU+JQogICAgICAgICAgICAgIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiczRfb3JkZXIiKSAlPiUKICAgICAgICAgICAgICBtdXRhdGUoczRfb3JkZXIgPSBhcy5udW1lcmljKHM0X29yZGVyKSkgJT4lCiAgICAgICAgICAgICAgc2VsZWN0KC1zNF9NUjFfYWJzLCAtczRfTVIyX2FicywgLXM0X01SM19hYnMpKQoKIyBjb25maWd1cmUgcGxvdCBsYWJlbHMKbGFiZWxfZGZfczEgPC0gY2hhcl9wbG90dGluZyAlPiUgZmlsdGVyKHN0dWR5ID09ICJzdHVkeSAxIikgJT4lIHNlbGVjdChjb25kaXRpb24sIG4pICU+JSB1bmlxdWUoKQpsYWJlbF9kZl9zMiA8LSBjaGFyX3Bsb3R0aW5nICU+JSBmaWx0ZXIoc3R1ZHkgPT0gInN0dWR5IDIiKSAlPiUgc2VsZWN0KGNvbmRpdGlvbiwgbikgJT4lIHVuaXF1ZSgpCmxhYmVsX2RmX3MzIDwtIGNoYXJfcGxvdHRpbmcgJT4lIGZpbHRlcihzdHVkeSA9PSAic3R1ZHkgMyIpICU+JSBzZWxlY3QoY29uZGl0aW9uLCBuKSAlPiUgdW5pcXVlKCkKbGFiZWxfZGZfczQgPC0gY2hhcl9wbG90dGluZyAlPiUgZmlsdGVyKHN0dWR5ID09ICJzdHVkeSA0IikgJT4lIHNlbGVjdChjb25kaXRpb24sIG4pICU+JSB1bmlxdWUoKQoKZmFjZXRMYWJzX3MxIDwtIGdzdWIoIiBcXCgiLCAiXG4oIiwgbWFrZUZhY2V0TGFicyhjaGFyX3Bsb3R0aW5nICU+JSBmaWx0ZXIoc3R1ZHkgPT0gInN0dWR5IDEiKSkpCmZhY2V0TGFic19zMiA8LSBnc3ViKCIgXFwoIiwgIlxuKCIsIG1ha2VGYWNldExhYnMoY2hhcl9wbG90dGluZyAlPiUgZmlsdGVyKHN0dWR5ID09ICJzdHVkeSAyIikpKQpmYWNldExhYnNfczMgPC0gZ3N1YigiIFxcKCIsICJcbigiLCBtYWtlRmFjZXRMYWJzKGNoYXJfcGxvdHRpbmcgJT4lIGZpbHRlcihzdHVkeSA9PSAic3R1ZHkgMyIpKSkKZmFjZXRMYWJzX3M0IDwtIGdzdWIoIiBcXCgiLCAiXG4oIiwgbWFrZUZhY2V0TGFicyhjaGFyX3Bsb3R0aW5nICU+JSBmaWx0ZXIoc3R1ZHkgPT0gInN0dWR5IDQiKSkpCgojIGNvbmZpZ3VyZSBjdXN0b20gcGFsZXR0ZQpteVBhbGV0dGUgPC0gYnJld2VyLnBhbCgzLCAiU2V0MSIpOyBuYW1lcyhteVBhbGV0dGUpIDwtIGMoIkJPRFkiLCAiSEVBUlQiLCAiTUlORCIpCgpwYWxldHRlX2Jhc2UgPC0gY2hhcl9wbG90dGluZyAlPiUgCiAgc2VsZWN0KG1jLCBlbmRzX3dpdGgoIl9mYWN0b3IiKSkgJT4lCiAgZGlzdGluY3QoKQpwYWxldHRlX3MxIDwtIGMocmVwKG15UGFsZXR0ZVsiTUlORCJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzMV9mYWN0b3IgPT0gIk1JTkQiKSAlPiUgY291bnQoKSksCiAgICAgICAgICAgICAgICByZXAobXlQYWxldHRlWyJIRUFSVCJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzMV9mYWN0b3IgPT0gIkhFQVJUIikgJT4lIGNvdW50KCkpLAogICAgICAgICAgICAgICAgcmVwKG15UGFsZXR0ZVsiQk9EWSJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzMV9mYWN0b3IgPT0gIkJPRFkiKSAlPiUgY291bnQoKSkpCnBhbGV0dGVfczIgPC0gYyhyZXAobXlQYWxldHRlWyJNSU5EIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHMyX2ZhY3RvciA9PSAiTUlORCIpICU+JSBjb3VudCgpKSwKICAgICAgICAgICAgICAgIHJlcChteVBhbGV0dGVbIkhFQVJUIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHMyX2ZhY3RvciA9PSAiSEVBUlQiKSAlPiUgY291bnQoKSksCiAgICAgICAgICAgICAgICByZXAobXlQYWxldHRlWyJCT0RZIl0sIHBhbGV0dGVfYmFzZSAlPiUgZmlsdGVyKHMyX2ZhY3RvciA9PSAiQk9EWSIpICU+JSBjb3VudCgpKSkKcGFsZXR0ZV9zMyA8LSBjKHJlcChteVBhbGV0dGVbIk1JTkQiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczNfZmFjdG9yID09ICJNSU5EIikgJT4lIGNvdW50KCkpLAogICAgICAgICAgICAgICAgcmVwKG15UGFsZXR0ZVsiSEVBUlQiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczNfZmFjdG9yID09ICJIRUFSVCIpICU+JSBjb3VudCgpKSwKICAgICAgICAgICAgICAgIHJlcChteVBhbGV0dGVbIkJPRFkiXSwgcGFsZXR0ZV9iYXNlICU+JSBmaWx0ZXIoczNfZmFjdG9yID09ICJCT0RZIikgJT4lIGNvdW50KCkpKQpwYWxldHRlX3M0IDwtIGMocmVwKG15UGFsZXR0ZVsiTUlORCJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzNF9mYWN0b3IgPT0gIk1JTkQiKSAlPiUgY291bnQoKSksCiAgICAgICAgICAgICAgICByZXAobXlQYWxldHRlWyJIRUFSVCJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzNF9mYWN0b3IgPT0gIkhFQVJUIikgJT4lIGNvdW50KCkpLAogICAgICAgICAgICAgICAgcmVwKG15UGFsZXR0ZVsiQk9EWSJdLCBwYWxldHRlX2Jhc2UgJT4lIGZpbHRlcihzNF9mYWN0b3IgPT0gIkJPRFkiKSAlPiUgY291bnQoKSkpCmBgYAoKIyMgRmlndXJlIDEKCk1lYW4gcmF0aW5ncyBvZiA0MCBtZW50YWwgY2FwYWNpdGllcyBmb3IgYSBzdWJzZXQgb2YgdGhlIDIxIGVudGl0aWVzIGluY2x1ZGVkIGluIFN0dWR5IDQuIChTZWUgRmlnLiBTNSBmb3IgbWVhbiByYXRpbmdzIGZvciB0aGUgZnVsbCBzZXQgb2YgZW50aXRpZXMuKSBQYXJ0aWNpcGFudHMgcmVzcG9uZGVkIG9uIGEgc2NhbGUgZnJvbSAwIChOb3QgYXQgYWxsIGNhcGFibGUpIHRvIDYgKEhpZ2hseSBjYXBhYmxlKS4gRXJyb3IgYmFycyBhcmUgbm9ucGFyYW1ldHJpYyBib290c3RyYXBwZWQgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzLiBNZW50YWwgY2FwYWNpdGllcyBhcmUgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlaXIgZG9taW5hbnQgZmFjdG9yIGxvYWRpbmcgaW4gU3R1ZHkgMS4gKkRvaW5nIGNvbXB1dGF0aW9ucyogd2FzIHRoZSBvbmx5IGl0ZW0gdG8gbG9hZCBuZWdhdGl2ZWx5IG9uIGl0cyBkb21pbmFudCBmYWN0b3IgaW4gYW55IHN0dWR5IChhbmQgZGlkIHNvIGluIFN0dWRpZXMgMS0zKTsgaW4gU3R1ZHkgNCwgaXQgbG9hZGVkIHBvc2l0aXZlbHkgb24gaXRzIGRvbWluYW50IGZhY3RvciAoRmFjdG9yIDIsIOKAnGhlYXJ04oCdKS4KCmBgYHtyIGZpZ3VyZSAxLCBmaWcud2lkdGggPSAxOCwgZmlnLmhlaWdodCA9IDEwfQojIG1ha2UgZGF0YWZyYW1lCnM0X3N1YnNldF9wbG90dGluZyA8LSBjaGFyX3Bsb3R0aW5nICU+JSAKICBmaWx0ZXIoc3R1ZHkgPT0gInN0dWR5IDQiLAogICAgICAgICBjb25kaXRpb24gJWluJSBjKCJzdGFwbGVyIiwgInJvYm90IiwgImJlZXRsZSIsICJnb2F0IiwgImVsZXBoYW50IiwgImFkdWx0IikpICU+JQogIGRpc3RpbmN0KCkKCiMgcGxvdCEgKG9yZGVyZWQgYnkgc3R1ZHkgMSBmYWN0b3IgbG9hZGluZ3MpCnM0X3N1YnNldCA8LSBnZ3Bsb3QoczRfc3Vic2V0X3Bsb3R0aW5nLCAKICAgICAgICAgICAgICAgYWVzKHggPSBtZWFuLCB5ID0gcmVvcmRlcih3b3JkaW5nLCBkZXNjKHMxX29yZGVyKSksIGNvbG91ciA9IHMxX2NvbG9yKSkgKwogIGdlb21fcG9pbnQoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gImlkZW50aXR5Iiwgc2l6ZSA9IDQpICsKICBnZW9tX2Vycm9yYmFyaChhZXMoeG1pbiA9IGNpX2xvd2VyLCB4bWF4ID0gY2lfdXBwZXIpLCBoZWlnaHQgPSAwLjQpICsKICBmYWNldF93cmFwKH4gY29uZGl0aW9uLCBuY29sID0gNiwKICAgICAgICAgICAgIGxhYmVsbGVyID0gbGFiZWxsZXIoY29uZGl0aW9uID0gZmFjZXRMYWJzX3M0KSkgKwogIHRoZW1lX2J3KCkgKwogIHRoZW1lKHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwKICAgICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJpdGFsaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG91ciA9IHBhbGV0dGVfczEpLAogICAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgICAgbGVnZW5kLnBvc2l0aW9uID0gIm5vbmUiKSArCiAgc2NhbGVfeF9jb250aW51b3VzKG5hbWUgPSAiXG5NZWFuIHJhdGluZyIsCiAgICAgICAgICAgICAgICAgICAgIGxpbWl0cyA9IGMoLTMsIDMpLAogICAgICAgICAgICAgICAgICAgICBicmVha3MgPSBzZXEoLTMsIDMsIDEpLAogICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBzZXEoMCwgNiwgMSkpICsKICBzY2FsZV9jb2xvdXJfYnJld2VyKG5hbWUgPSAiRmFjdG9yOiIsCiAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gInF1YWwiLCBwYWxldHRlID0gNikKCnM0X3N1YnNldApgYGAKCiMjIEZpZ3VyZSBTMSAoc3VwcG9ydGluZyBtYXRlcmlhbHMpCgpGYWN0b3IgbG9hZGluZ3MgZm9yIHRoZSA0MCBtZW50YWwgY2FwYWNpdGllcyBvbiB0aGUgdGhyZWUgcm90YXRlZCBmYWN0b3JzIGluIFN0dWR5IDEuIEl0ZW1zIGFyZSBjb2xvcmVkIGJ5IHRoZWlyIGRvbWluYW50IGZhY3RvciBsb2FkaW5nOiBJdGVtcyB0aGF0IGxvYWRlZCBtb3N0IHN0cm9uZ2x5IG9uIHRoZSBib2R5IGZhY3RvciAocGh5c2lvbG9naWNhbCBzdGF0ZXMgYW5kIHdpbGwpIGFyZSBpbiByZWQ7IGl0ZW1zIHRoYXQgbG9hZGVkIG1vc3Qgc3Ryb25nbHkgb24gdGhlIGhlYXJ0IGZhY3RvciAoc29jaWFsLWVtb3Rpb25hbCBleHBlcmllbmNlcyBhbmQgbW9yYWxpdHkpIGFyZSBpbiBibHVlOyBhbmQgaXRlbXMgdGhhdCBsb2FkZWQgbW9zdCBzdHJvbmdseSBvbiB0aGUgbWluZCBmYWN0b3IgKHBlcmNlcHR1YWwtY29nbml0aXZlIGFiaWxpdGllcyBhbmQgZ29hbCBwdXJzdWl0KSBhcmUgaW4gZ3JlZW4uCgpgYGB7ciBmaWd1cmUgUzF9CiMgc2V0IHVwIGxhYmVscyBmb3IgcGxvdCAoc2hvcnRlbmVkIHZlcnNpb24gb2YgbWVudGFsIGNhcGFjaXR5IGl0ZW1zKQp3b3JkaW5nIDwtIGxvYWRpbmdzKGVmYV9kMV9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiaXRlbSIpICU+JQogIHNlbGVjdChpdGVtKSAlPiUKICBtdXRhdGUod29yZGluZyA9IGMoImZlZWxpbmcgaGFwcHkiLCAiZmVlbGluZyBkZXByZXNzZWQiLCAiZXhwZXJpZW5jaW5nIGZlYXIiLAogICAgICAgICAgICAgICAgICAgICAiZ2V0dGluZyBhbmdyeSIsICJmZWVsaW5nIGNhbG0iLCAiZGV0ZWN0aW5nIHNvdW5kcyIsCiAgICAgICAgICAgICAgICAgICAgICJzZWVpbmcgdGhpbmdzIiwgInNlbnNpbmcgdGVtcGVyYXR1cmVzIiwgImRldGVjdGluZyBvZG9ycyIsCiAgICAgICAgICAgICAgICAgICAgICJwZXJjZWl2aW5nIGRlcHRoIiwgImRvaW5nIGNvbXB1dGF0aW9ucyIsICJoYXZpbmcgdGhvdWdodHMiLAogICAgICAgICAgICAgICAgICAgICAicmVhc29uaW5nIGFib3V0IHRoaW5ncyIsICJyZW1lbWJlcmluZyB0aGluZ3MiLCAiaG9sZGluZyBiZWxpZWZzIiwKICAgICAgICAgICAgICAgICAgICAgImdldHRpbmcgaHVuZ3J5IiwgImZlZWxpbmcgdGlyZWQiLCAiZXhwZXJpZW5jaW5nIHBhaW4iLAogICAgICAgICAgICAgICAgICAgICAiZmVlbGluZyBuYXVzZWF0ZWQiLCAiZmVlbGluZyBzYWZlIiwgImZlZWxpbmcgbG92ZSIsCiAgICAgICAgICAgICAgICAgICAgICJyZWNvZ25pemluZyBzb21lb25lIiwgImNvbW11bmljYXRpbmcgd2l0aCBvdGhlcnMiLCAiZXhwZXJpZW5jaW5nIGd1aWx0IiwKICAgICAgICAgICAgICAgICAgICAgImZlZWxpbmcgZGlzcmVzcGVjdGVkIiwgImhhdmluZyBmcmVlIHdpbGwiLCAibWFraW5nIGNob2ljZXMiLAogICAgICAgICAgICAgICAgICAgICAiZXhlcmNpc2luZyBzZWxmLXJlc3RyYWludCIsICJoYXZpbmcgaW50ZW50aW9ucyIsICJ3b3JraW5nIHRvd2FyZCBhIGdvYWwiLAogICAgICAgICAgICAgICAgICAgICAiYmVpbmcgY29uc2Npb3VzIiwgImJlaW5nIHNlbGYtYXdhcmUiLCAiaGF2aW5nIGRlc2lyZXMiLAogICAgICAgICAgICAgICAgICAgICAiZmVlbGluZyBlbWJhcnJhc3NlZCIsICJ1bmRlcnN0YW5kaW5nIGhvdyBvdGhlcnMgYXJlIGZlZWxpbmciLCAKICAgICAgICAgICAgICAgICAgICAgImV4cGVyaWVuY2luZyBqb3kiLCAidGVsbGluZyByaWdodCBmcm9tIHdyb25nIiwgImhhdmluZyBhIHBlcnNvbmFsaXR5IiwKICAgICAgICAgICAgICAgICAgICAgImV4cGVyaWVuY2luZyBwbGVhc3VyZSIsICJleHBlcmllbmNpbmcgcHJpZGUiKSwKICAgICAgICAgc2hvcnQgPSBjKCJoYXBwaW5lc3MiLCAiZGVwcmVzc2lvbiIsICJmZWFyIiwKICAgICAgICAgICAgICAgICAgICJhbmdlciIsICJjYWxtIiwgInNvdW5kIiwKICAgICAgICAgICAgICAgICAgICJzaWdodCIsICJ0ZW1wZXJhdHVyZSIsICJvZG9yIiwKICAgICAgICAgICAgICAgICAgICJkZXB0aCIsICJjb21wdXRhdGlvbiIsICJ0aG91Z2h0IiwKICAgICAgICAgICAgICAgICAgICJyZWFzb25pbmciLCAibWVtb3J5IiwgImJlbGllZiIsCiAgICAgICAgICAgICAgICAgICAiaHVuZ2VyIiwgInRpcmVkbmVzcyIsICJwYWluIiwKICAgICAgICAgICAgICAgICAgICJuYXVzZWEiLCAic2FmZXR5IiwgImxvdmUiLAogICAgICAgICAgICAgICAgICAgInJlY29nbml0aW9uIiwgImNvbW11bmljYXRpb24iLCAiZ3VpbHQiLAogICAgICAgICAgICAgICAgICAgImRpc3Jlc3BlY3QiLCAiZnJlZSB3aWxsIiwgImNob2ljZSIsCiAgICAgICAgICAgICAgICAgICAic2VsZi1yZXN0cmFpbnQiLCAiaW50ZW50aW9uIiwgImdvYWwiLAogICAgICAgICAgICAgICAgICAgImNvbnNjaW91c25lc3MiLCAic2VsZi1hd2FyZW5lc3MiLCAiZGVzaXJlIiwKICAgICAgICAgICAgICAgICAgICJlbWJhcnJhc3NtZW50IiwgImVtcGF0aHkiLCAKICAgICAgICAgICAgICAgICAgICJqb3kiLCAibW9yYWxpdHkiLCAicGVyc29uYWxpdHkiLAogICAgICAgICAgICAgICAgICAgInBsZWFzdXJlIiwgInByaWRlIikpCgojIG1ha2UgZGF0YWZyYW1lIGZvciBwbG90dGluZwpzY2F0dGVyX3Bsb3R0aW5nIDwtIGxvYWRpbmdzKGVmYV9kMV9hbGxfcm90YXRlZE4pW10gJT4lCiAgZGF0YS5mcmFtZSgpICU+JQogIHJvd25hbWVzX3RvX2NvbHVtbih2YXIgPSAiaXRlbSIpICU+JQogIHJlbmFtZShCT0RZID0gTVIxLAogICAgICAgICBIRUFSVCA9IE1SMiwKICAgICAgICAgTUlORCA9IE1SMykgJT4lCiAgZnVsbF9qb2luKHdvcmRpbmcpICU+JQogIG11dGF0ZShkb21pbmFudCA9IGZhY3RvcigKICAgIGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoQk9EWSksICJCT0RZIiwKICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKEhFQVJUKSwgIkhFQVJUIiwKICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhNSU5EKSwgIk1JTkQiLAogICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSkpLAogICAgc2l6ZSA9IGlmZWxzZShwbWF4KGFicyhCT0RZKSwgYWJzKEhFQVJUKSwgYWJzKE1JTkQpKSA9PSBhYnMoQk9EWSksIGFicyhCT0RZKSwKICAgICAgICAgICAgICAgICAgaWZlbHNlKHBtYXgoYWJzKEJPRFkpLCBhYnMoSEVBUlQpLCBhYnMoTUlORCkpID09IGFicyhIRUFSVCksIGFicyhIRUFSVCksCiAgICAgICAgICAgICAgICAgICAgICAgICBpZmVsc2UocG1heChhYnMoQk9EWSksIGFicyhIRUFSVCksIGFicyhNSU5EKSkgPT0gYWJzKE1JTkQpLCBhYnMoTUlORCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkEpKSksCiAgICBjb2xvciA9IGlmZWxzZShkb21pbmFudCA9PSAiQk9EWSIsICIjZTQxYTFjIiwKICAgICAgICAgICAgICAgICAgIGlmZWxzZShkb21pbmFudCA9PSAiSEVBUlQiLCAiIzM3N2ViOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKGRvbWluYW50ID09ICJNSU5EIiwgIiM0ZGFmNGEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOQSkpKSkKCiMgcGxvdCEKZmlnUzEgPC0gcGxvdF9seShzY2F0dGVyX3Bsb3R0aW5nLCB4ID0gSEVBUlQsIHkgPSBCT0RZLCB6ID0gTUlORCwKICAgICAgICAgICAgIHR5cGUgPSAic2NhdHRlcjNkIiwKICAgICAgICAgICAgIGNvbG9yID0gZG9taW5hbnQsIGNvbG9ycyA9IGMoIiM0ZGFmNGEiLCAiI2U0MWExYyIsICIjMzc3ZWI4IiksCiAgICAgICAgICAgICBtYXJrZXIgPSBsaXN0KHNpemUgPSA0KSwKICAgICAgICAgICAgIHRleHQgPSBzaG9ydCwKICAgICAgICAgICAgIHRleHRmb250ID0gbGlzdChzaXplID0gMTUpLAogICAgICAgICAgICAgbW9kZSA9ICJ0ZXh0K21hcmtlcnMiLAogICAgICAgICAgICAgc2hvd2xlZ2VuZCA9IFRSVUUpCgpmaWdTMQpgYGAKCiMjIEZpZ3VyZSBTMiAoc3VwcG9ydGluZyBtYXRlcmlhbHMpCgpNZWFuIHJhdGluZ3Mgb2YgNDAgbWVudGFsIGNhcGFjaXRpZXMgZm9yIHRoZSAyIGVudGl0aWVzIGluY2x1ZGVkIGluIFN0dWRpZXMgMS0zLiBQYXJ0aWNpcGFudHMgcmVzcG9uZGVkIG9uIGEgc2NhbGUgZnJvbSAwIChOb3QgYXQgYWxsIGNhcGFibGUpIHRvIDYgKEhpZ2hseSBjYXBhYmxlKS4gRXJyb3IgYmFycyBhcmUgbm9ucGFyYW1ldHJpYyBib290c3RyYXBwZWQgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzLiBNZW50YWwgY2FwYWNpdGllcyBhcmUgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlaXIgZG9taW5hbnQgZmFjdG9yIGxvYWRpbmcgaW4gU3R1ZHkgMS4KCmBgYHtyIGZpZ3VyZSBTMiwgZmlnLndpZHRoID0gMjcsIGZpZy5oZWlnaHQgPSAyMH0KIyBtYWtlIGRhdGFmcmFtZQpzMTIzX3Bsb3R0aW5nIDwtIGNoYXJfcGxvdHRpbmcgJT4lIAogIGZpbHRlcihzdHVkeSAhPSAic3R1ZHkgNCIpICU+JQogIGRpc3RpbmN0KCkKCiMgcGxvdCEgKG9yZGVyZWQgYnkgc3R1ZHkgMyBmYWN0b3IgbG9hZGluZ3MpCnMxMjMgPC0gZ2dwbG90KHMxMjNfcGxvdHRpbmcsIAogICAgICAgICAgICAgICBhZXMoeSA9IG1lYW4sIHggPSByZW9yZGVyKHdvcmRpbmcsIGRlc2MoczFfb3JkZXIpKSwgY29sb3VyID0gczFfY29sb3IsCiAgICAgICAgICAgICAgICAgICBzaGFwZSA9IHN0dWR5KSkgKwogIGdlb21fcG9pbnQoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjYpLCBzaXplID0gMikgKwogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwgd2lkdGggPSAwLjQsCiAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC42KSkgKwogIGZhY2V0X3dyYXAofiBjb25kaXRpb24pICsKICB0aGVtZV9idygpICsKICBzY2FsZV95X2NvbnRpbnVvdXMobmFtZSA9ICJcbk1lYW4gcmF0aW5nIiwKICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gYygtMywgMyksCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrcyA9IHNlcSgtMywgMywgMSksCiAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IHNlcSgwLCA2LCAxKSkgKwogIHNjYWxlX3NoYXBlX2Rpc2NyZXRlKG5hbWUgPSAiU3R1ZHk6IikgKwogIHNjYWxlX2NvbG91cl9icmV3ZXIobmFtZSA9ICJGYWN0b3I6IiwKICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAicXVhbCIsIHBhbGV0dGUgPSA2LAogICAgICAgICAgICAgICAgICAgICAgZ3VpZGUgPSBGQUxTRSkgKwogIGNvb3JkX2ZsaXAoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYpLAogICAgICBheGlzLnRpdGxlLnkgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgIGF4aXMudGV4dC55ID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiaXRhbGljIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gcGFsZXR0ZV9zMSksCiAgICAgIHBhbmVsLmdyaWQubWlub3IgPSBlbGVtZW50X2JsYW5rKCksCiAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJyaWdodCIpCgpzMTIzCmBgYAoKIyMgRmlndXJlIFMzIChzdXBwb3J0aW5nIG1hdGVyaWFscykKCk1lYW4gcmF0aW5ncyBvZiA0MCBtZW50YWwgY2FwYWNpdGllcyBmb3IgYWxsIDIxIGVudGl0aWVzIGluY2x1ZGVkIGluIFN0dWR5IDQuIFBhcnRpY2lwYW50cyByZXNwb25kZWQgb24gYSBzY2FsZSBmcm9tIDAgKE5vdCBhdCBhbGwgY2FwYWJsZSkgdG8gNiAoSGlnaGx5IGNhcGFibGUpLiBFcnJvciBiYXJzIGFyZSBub25wYXJhbWV0cmljIGJvb3RzdHJhcHBlZCA5NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMuIE1lbnRhbCBjYXBhY2l0aWVzIGFyZSBncm91cGVkIGFjY29yZGluZyB0byB0aGVpciBkb21pbmFudCBmYWN0b3IgbG9hZGluZyBpbiBTdHVkeSA0LgoKYGBge3IgZmlndXJlIFMzLCBmaWcud2lkdGggPSAyNywgZmlnLmhlaWdodCA9IDIwfQojIG1ha2UgZGF0YWZyYW1lCnM0X3Bsb3R0aW5nIDwtIGNoYXJfcGxvdHRpbmcgJT4lIAogIGZpbHRlcihzdHVkeSA9PSAic3R1ZHkgNCIpICU+JQogIGRpc3RpbmN0KCkKCiMgcGxvdCEgKG9yZGVyZWQgYnkgc3R1ZHkgNCBmYWN0b3IgbG9hZGluZ3MpCnM0IDwtIGdncGxvdChzNF9wbG90dGluZywgCiAgICAgICAgICAgICAgIGFlcyh4ID0gbWVhbiwgeSA9IHJlb3JkZXIod29yZGluZywgZGVzYyhzNF9vcmRlcikpLCBjb2xvdXIgPSBzNF9jb2xvcikpICsKICBnZW9tX3BvaW50KHN0YXQgPSAiaWRlbnRpdHkiLCBwb3NpdGlvbiA9ICJpZGVudGl0eSIsIHNpemUgPSA0KSArCiAgZ2VvbV9lcnJvcmJhcmgoYWVzKHhtaW4gPSBjaV9sb3dlciwgeG1heCA9IGNpX3VwcGVyKSwgaGVpZ2h0ID0gMC40KSArCiAgZmFjZXRfd3JhcCh+IGNvbmRpdGlvbiwgbmNvbCA9IDIxLAogICAgICAgICAgICAgbGFiZWxsZXIgPSBsYWJlbGxlcihjb25kaXRpb24gPSBmYWNldExhYnNfczQpKSArCiAgdGhlbWVfYncoKSArCiAgdGhlbWUodGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYpLAogICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBheGlzLnRleHQueSA9IGVsZW1lbnRfdGV4dChmYWNlID0gIml0YWxpYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3VyID0gcGFsZXR0ZV9zNCksCiAgICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgICBsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpICsKICBzY2FsZV94X2NvbnRpbnVvdXMobmFtZSA9ICJcbk1lYW4gcmF0aW5nIiwKICAgICAgICAgICAgICAgICAgICAgbGltaXRzID0gYygtMywgMyksCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrcyA9IHNlcSgtMywgMywgMSksCiAgICAgICAgICAgICAgICAgICAgIGxhYmVscyA9IHNlcSgwLCA2LCAxKSkgKwogIHNjYWxlX2NvbG91cl9icmV3ZXIobmFtZSA9ICJGYWN0b3I6IiwKICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAicXVhbCIsIHBhbGV0dGUgPSA2KQoKczQKYGBgCgojIyBGaWd1cmUgUzcgKHN1cHBvcnRpbmcgbWF0ZXJpYWxzKQoKTWVhbiByYXRpbmdzIG9mIDQwIG1lbnRhbCBjYXBhY2l0aWVzIGZvciBhbGwgb2YgdGhlIGVudGl0aWVzIGluY2x1ZGVkIGluIFN0dWRpZXMgMS00LiBQYXJ0aWNpcGFudHMgcmVzcG9uZGVkIG9uIGEgc2NhbGUgZnJvbSAwIChOb3QgYXQgYWxsIGNhcGFibGUpIHRvIDYgKEhpZ2hseSBjYXBhYmxlKS4gRXJyb3IgYmFycyBhcmUgbm9ucGFyYW1ldHJpYyBib290c3RyYXBwZWQgOTUlIGNvbmZpZGVuY2UgaW50ZXJ2YWxzLiBNZW50YWwgY2FwYWNpdGllcyBhcmUgZ3JvdXBlZCBhY2NvcmRpbmcgdG8gdGhlaXIgZG9taW5hbnQgZmFjdG9yIGxvYWRpbmcgaW4gU3R1ZHkgMS4KCmBgYHtyIGZpZ3VyZSBTNywgZmlnLndpZHRoID0gMjcsIGZpZy5oZWlnaHQgPSA0MH0KIyBtYWtlIGRhdGFmcmFtZQpzMTIzNF9wbG90dGluZyA8LSBjaGFyX3Bsb3R0aW5nICU+JSAKICBkaXN0aW5jdCgpCgojIHBsb3QhIChvcmRlcmVkIGJ5IHN0dWR5IDMgZmFjdG9yIGxvYWRpbmdzKQpzMTIzNCA8LSBnZ3Bsb3QoczEyMzRfcGxvdHRpbmcsIAogICAgICAgICAgICAgICBhZXMoeSA9IG1lYW4sIHggPSByZW9yZGVyKHdvcmRpbmcsIGRlc2MoczFfb3JkZXIpKSwgY29sb3VyID0gczFfY29sb3IsCiAgICAgICAgICAgICAgICAgICBzaGFwZSA9IHN0dWR5KSkgKwogIGdlb21fcG9pbnQoc3RhdCA9ICJpZGVudGl0eSIsIHBvc2l0aW9uID0gcG9zaXRpb25fZG9kZ2Uod2lkdGggPSAwLjYpLCBzaXplID0gMikgKwogIGdlb21fZXJyb3JiYXIoYWVzKHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwgd2lkdGggPSAwLjQsCiAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9uX2RvZGdlKHdpZHRoID0gMC42KSkgKwogIGZhY2V0X3dyYXAofiBjb25kaXRpb24sIG5jb2wgPSAxMSkgKwogIHRoZW1lX2J3KCkgKwogIHNjYWxlX3lfY29udGludW91cyhuYW1lID0gIlxuTWVhbiByYXRpbmciLAogICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBjKC0zLCAzKSwKICAgICAgICAgICAgICAgICAgICAgYnJlYWtzID0gc2VxKC0zLCAzLCAxKSwKICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gc2VxKDAsIDYsIDEpKSArCiAgc2NhbGVfc2hhcGVfZGlzY3JldGUobmFtZSA9ICJTdHVkeToiKSArCiAgc2NhbGVfY29sb3VyX2JyZXdlcihuYW1lID0gIkZhY3RvcjoiLAogICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJxdWFsIiwgcGFsZXR0ZSA9IDYsCiAgICAgICAgICAgICAgICAgICAgICBndWlkZSA9IEZBTFNFKSArCiAgY29vcmRfZmxpcCgpICsKICB0aGVtZSh0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNiksCiAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoZmFjZSA9ICJpdGFsaWMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvdXIgPSBwYWxldHRlX3MxKSwKICAgICAgcGFuZWwuZ3JpZC5taW5vciA9IGVsZW1lbnRfYmxhbmsoKSwKICAgICAgbGVnZW5kLnBvc2l0aW9uID0gImJvdHRvbSIpCgpzMTIzNApgYGAKCg==